2010-03-31 98 views
0

我有兩個表: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相關聯的所有聯繫人的列表有點難倒!=不會爲不返回沒有任何聯繫的聯繫人的工作。

謝謝。

回答

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

2

只是說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

0

有一個直forwarrd辦法做到這一點,就像你表達它。選擇名稱 FROM .... WHERE Link.source_id!= 8;

0

不應該這項工作?

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