【问题标题】:Is there a more efficient query to check multiple conditions in a self-join?是否有更有效的查询来检查自联接中的多个条件?
【发布时间】:2021-04-25 00:54:43
【问题描述】:

问题是找到所有三种交通方式都发生在其中的州。因此,在列出不同旅行详细信息的表格中 - 您想要返回具有汽车旅行、飞机旅行的 TripID 的状态,和火车。以下是我当前的查询

我的问题 - 虽然这回答了问题,但在自加入的范围内是否有更简洁的方式来编写它?我觉得嵌套子查询只会过度补偿,但这感觉就像它回答了我当前的问题,但在更大的数据库搜索中会很混乱。

【问题讨论】:

    标签: mysql sql join self-join


    【解决方案1】:

    问题是找到所有三种交通方式都发生的状态。

    只使用聚合:

    SELECT T.TripState
    FROM TRIP T
    WHERE T.TravelMode IN ('Train', 'Plane', 'Car')
    GROUP BY T.TripState
    HAVING COUNT(DISTINCT T.TravelMode) = 3;
    

    【讨论】:

    • 哇。好多了。我希望我不是那么愚蠢并且已经想到了这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2012-04-19
    • 1970-01-01
    • 2018-09-19
    • 2015-04-08
    • 1970-01-01
    相关资源
    最近更新 更多