MySQL查询返回不在一组行

问题描述:

我有两个表:MySQL查询返回不在一组行

联系(ID,姓名) 链接(ID,CONTACT_ID,SOURCE_ID)

我有以下查询其作品是在链接表中返回具有8的source_id的联系人。

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

但是我如何退回未用的8.简单SOURCE_ID相关联的所有联系人的列表有点难倒!=不会为不返回没有任何联系的联系人的工作。

谢谢。

用途:

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 
+0

不错,非常感谢。我会在几分钟内接受它! – igluratds 2010-03-31 03:04:15

+0

@iglurat:NP。你也可以使用'NOT IN'或'NOT EXISTS',但是在MySQL上,LEFT JOIN/IS NULL更有效率:http://explainextended.com/2009/09/18/not-in-vs-not- exists-vs-left-join-is-null-mysql/ – 2010-03-31 03:06:03

+0

谢谢,会读入! – igluratds 2010-03-31 03:36:34

只是说WHERE Link.source_id != 8;

+0

对不起,但这是一个典型的麻木坚果答复“让我尽可能多的代表”。 – igluratds 2010-03-31 02:59:59

+0

只是想帮助你。无论如何感谢... – 2010-03-31 03:09:07

+0

对不起有点苛刻,我想有些人的问题比我更简单! – igluratds 2010-03-31 03:09:43

有一个直forwarrd办法做到这一点,就像你表达它。选择名称 FROM .... WHERE Link.source_id!= 8;

您可以从改变where条件:

Link.source_id = 8; 

Link.source_id != 8; 

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

两者都是not equal operator in MySQL

不应该这项工作?

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