2013-07-12 85 views
0

我試圖阻止某些列表中的名稱,這是我試圖的MySQL排除阻塞表

命令

SELECT * FROM USER LIMIT 0, 50 WHERENOT IN (SELECT * FROM排除)

我排除表包含用戶名,我想阻止它,但似乎不工作。

+0

「似乎不工作」不是一個描述你遇到的問題。我們不知道什麼是「不工作」,除非你解釋它。請具體說明您要求我們幫助您解決的問題。我們無法看到您的屏幕或從我們所在的位置閱讀您的想法,因此我們只有您提供給我們的信息。謝謝。 –

回答

1

重新編碼它作爲一個左連接: -

SELECT `USER`.* 
FROM `USER` 
LEFT OUTER JOIN exclude 
ON `USER`.name = exclude.name 
WHERE exclude.name IS NULL 
LIMIT 0, 50 

但是,如果你想要做它使用相同的樣式之前,你需要從選擇返回匹配字段從排除,不是每一個領域(即不SELECT *)

SELECT * 
FROM `USER` 
WHERE name NOT IN (SELECT name FROM exclude) 
LIMIT 0, 50 
+0

謝謝完美 – user1396982

+1

請注意,某些MySQL引擎和區域設置組合對於表和列名稱是區分大小寫的,所以在上述答案的「USER'.name = exclude.name」中使用大寫'USER'會更加正確。我編輯修復接受的答案未被同行評論者接受,因此我將其作爲評論發佈。 – linguanerd

+0

以上是非常真實的。將編輯答案以匹配。 – Kickstart

0

試試這個:

SELECT * FROM USER LIMIT 0, 50 WHERE name NOT IN (SELECT name FROM exclude)

您查詢不起作用的最可能原因是exclude表可能有多個列,當您試圖運行查詢時會導致錯誤