MYSQL查询返回不在集合中的行

时间:2010-03-31 02:52:21

标签: mysql

我有两张桌子:

联系人(身份证,姓名) 链接(id,contact_id,source_id)

我有以下查询,它可以在链接表中返回source_id为8的联系人。

SELECT name FROM `Contact` LEFT JOIN Link ON Link.contact_id = Contact.id WHERE Link.source_id=8;

然而,我对如何返回与source_id为8无关联的所有联系人的列表感到有点困惑。简单!=将不起作为没有任何链接的联系人不会被返回。

感谢。

5 个答案:

答案 0 :(得分:2)

只需说WHERE Link.source_id != 8;

答案 1 :(得分:1)

使用:

   SELECT c.name 
     FROM CONTACT c
LEFT JOIN LINK l ON l.contact_id = c.id
                AND l.source_id = 8
    WHERE l.contact_id IS NULL

答案 2 :(得分:0)

正如你所表达的那样,有一种直接的方式来做到这一点。

SELECT名称 来自.... 在哪里Link.source_id!= 8;

答案 3 :(得分:0)

您可以更改where条件:

Link.source_id = 8;

Link.source_id != 8;

您也可以使用<>代替!=

两者都是not equal operator in MySQL

答案 4 :(得分:0)

这不行吗?

WHERE Link.source_id <> 8 OR Link.source_id IS NULL