【问题标题】:MySQL select if all values belonging to id are present in another tableMySQL选择是否属于id的所有值都存在于另一个表中
【发布时间】:2017-04-16 09:50:27
【问题描述】:

基本上我有两张桌子:

rid|element     id|element  
 1 |   x        1 | a    
 1 |   y        2 | b    
 1 |   z        3 | c
 1 |   a        4 | d
 2 |   b        5 | e
 2 |   c        6 | x
 2 |   d        7 | z
 3 |   e        
 3 |   z  
 3 |   x

我想返回 rid = 2, 3 而不是 1,因为元素 y 不在第二个表中。我认为答案在于我使用的连接类型,但我还没有真正理解这些

【问题讨论】:

标签: mysql sql select join


【解决方案1】:

我会先将第一个表左连接到第二个表,然后通过 rid 进行聚合,以检查第一个表中的每个 element 实际上是否与第二个表中的 element 匹配。

SELECT t1.rid
FROM table1 t1
LEFT JOIN table2 t2
    ON t1.element = t2.element
GROUP BY t1.rid
HAVING SUM(CASE WHEN t2.element IS NULL THEN 1 ELSE 0 END) = 0

【讨论】:

    猜你喜欢
    • 2013-07-23
    • 2018-03-20
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2016-09-19
    • 2018-10-23
    相关资源
    最近更新 更多