[英]select from database table rows that are not in another table
我在MYSQL数据库中有一个“条目”表。 我还有另一个表记录这些条目上的活动,该表的ID作为外键。 我想从第一张表中选择不在第二张表中出现的条目。
如何使用SQL做到这一点? 我是否必须遍历两个表并将每个条目与其他每个条目进行比较? 有没有更简单的方法可以做到这一点?
恩。 我有一个带有条目数据列和用户名列的表。 我有另一个带有条目ID列和用户ID列的表。 我想从第一张表中选择所有没有出现在具有给定用户ID的第二张表中的条目。
提前谢谢。 我已经为此实验苦苦挣扎了一段时间。 我想我必须以某种方式加入两个表?
有几种方法可以做到这一点, NOT IN
, NOT EXISTS
, LEFT JOIN / NULL
检查。 这是一个NOT EXISTS
:
SELECT *
FROM FirstTable T
WHERE NOT EXISTS (
SELECT *
FROM SecondTable T2
WHERE T.Id = T2.Id
)
据我了解,您想选择外键与其他表中的任何内容都不匹配的所有行。 这应该可以解决问题:
SELECT *
FROM Data A
RIGHT JOIN Entry B
ON A.ID = B.ID
WHERE A.ID IS NULL
您也可以使用NOT IN,而这一机制实际上更容易理解。
SELECT *
FROM Data A
WHERE A.ID NOT IN (SELECT ID FROM Entry)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.