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

时间:2014-09-18 18:38:20

标签: mysql sql database

我在MYSQL数据库中有一个'entries'表。我有另一个表记录这些条目的活动,该条目的id作为外键。我想从第一个没有出现在第二个表中的表条目中进行选择。

我如何使用SQL来实现这一目标?我是否必须遍历两个表并将每个条目与其他所有条目进行比较?有更简单的方法吗?

离。我有一个包含条目数据列和用户名列的表。我有另一个表,其中包含一个条目id列和一个用户id列。我想从我的第一个表中选择第二个表中没有出现的具有给定用户ID的所有条目。

提前谢谢。我一直在为这个实验苦苦挣扎。我想我必须以某种方式加入这两张桌子?

2 个答案:

答案 0 :(得分:3)

实现此目的的几种方法,NOT INNOT EXISTSLEFT 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)