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
答
有一个直forwarrd办法做到这一点,就像你表达它。选择名称 FROM .... WHERE Link.source_id!= 8;
答
您可以从改变where
条件:
Link.source_id = 8;
到
Link.source_id != 8;
您还可以代替使用<>
的!=
答
不应该这项工作?
WHERE Link.source_id <> 8 OR Link.source_id IS NULL
不错,非常感谢。我会在几分钟内接受它! – igluratds 2010-03-31 03:04:15
@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
谢谢,会读入! – igluratds 2010-03-31 03:36:34