我在MYSQL数据库中有一个'entries'表。我有另一个表记录这些条目的活动,该条目的id作为外键。我想从第一个没有出现在第二个表中的表条目中进行选择。
我如何使用SQL来实现这一目标?我是否必须遍历两个表并将每个条目与其他所有条目进行比较?有更简单的方法吗?
离。我有一个包含条目数据列和用户名列的表。我有另一个表,其中包含一个条目id列和一个用户id列。我想从我的第一个表中选择第二个表中没有出现的具有给定用户ID的所有条目。
提前谢谢。我一直在为这个实验苦苦挣扎。我想我必须以某种方式加入这两张桌子?
答案 0 :(得分:3)
实现此目的的几种方法,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
)
答案 1 :(得分:1)
根据我的理解,您希望选择外键与另一个表中的任何内容都不匹配的所有行。这应该可以解决问题:
SELECT *
FROM Data A
RIGHT JOIN Entry B
ON A.ID = B.ID
WHERE A.ID IS NULL
Here's a handy chart that illustrates how to use joins for stuff like this.
你也可以使用NOT IN,这个的机制实际上更容易理解。
SELECT *
FROM Data A
WHERE A.ID NOT IN (SELECT ID FROM Entry)