繁体   English   中英

从不在另一个表中的数据库表行中选择

[英]select from database table rows that are not in another table

我在MYSQL数据库中有一个“条目”表。 我还有另一个表记录这些条目上的活动,该表的ID作为外键。 我想从第一张表中选择不在第二张表中出现的条目。

如何使用SQL做到这一点? 我是否必须遍历两个表并将每个条目与其他每个条目进行比较? 有没有更简单的方法可以做到这一点?

恩。 我有一个带有条目数据列和用户名列的表。 我有另一个带有条目ID列和用户ID列的表。 我想从第一张表中选择所有没有出现在具有给定用户ID的第二张表中的条目。

提前谢谢。 我已经为此实验苦苦挣扎了一段时间。 我想我必须以某种方式加入两个表?

有几种方法可以做到这一点, NOT INNOT EXISTSLEFT 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM