SELECT Id, Name, Lastname
FROM customers AS c, Places AS p,
WHERE c.customer_ID = p.customer_ID
我的問題是,我想阻止顯示一排中存在的另一個表查詢(階段)從表中選擇當列的值沒有在另一個表中存在
SELECT Id, Name, Lastname
FROM customers AS c, Places AS p,
WHERE c.customer_ID = p.customer_ID
我的問題是,我想阻止顯示一排中存在的另一個表查詢(階段)從表中選擇當列的值沒有在另一個表中存在
你可以做一個LEFT JOIN和檢查空。
SELECT Id, Name, Lastname
FROM customers AS c LEFT JOIN Places AS p ON c.customer_ID = p.customer_ID
WHERE p.customer_ID IS NULL
上帝保佑你! – 2013-04-23 22:15:02
結果您可以使用:
SELECT Id, Name, Lastname
FROM customers AS c JOIN Places AS p USING(customer_ID)
這是用in/exists
可以更快的方式。
MySQL是否支持using關鍵字? – 2013-04-23 21:54:25
你的意思是什麼關鍵字? – Jack 2013-04-23 22:00:16
添加
and not exists
(subquery to select your exclusions)
到您的查詢
非常感謝你,這是非常有用的 – 2013-04-23 21:55:43
嘿又!對不起,我是一個新人。結果是相反的,我想阻止顯示該行的查詢結果,如果存在其他表。 – 2013-04-23 22:07:00
我想你想是這樣的:
SELECT Id, Name, Lastname FROM customers, WHERE customer_ID NOT IN (SELECT customer_ID FROM Places)
對於大型數據集,不是非常慢。 – 2013-04-23 21:57:06
你說得對。再想一想,很明顯不存在必須更快。當發現一條記錄時它可以停止,而我的應該檢查NOT IN(...)部分中的所有記錄。 – 2013-04-23 22:00:39
遺憾的標題,我想說是否存在 – 2013-04-23 21:50:48
二者必選其一的'IF NOT EXISTS()'建造或'LEFT將其他表加入您的on子句WHERE其他表中的某個不可爲空的列IS NULL。 – Wrikken 2013-04-23 21:53:27
ANSI-89加入FTL。 – 2013-04-23 21:54:31