2012-04-27 26 views
1

我有一個查詢NOT IN。我聽說MySQL不支持NOT IN,但我不知道如何重寫它。mysql不在重寫查詢問題

我的查詢是:

SELECT * FROM quests 
    WHERE id NOT IN ('" .$quest_completed. "') 
    AND location=" .$location_id. " 
    AND (follows=0 OR follows IN ('" .$quest_completed. "')) 
    ORDER BY title 

如:

SELECT * FROM quests 
WHERE id NOT IN (6,21) AND 
    location=8 AND 
    (follows=0 OR follows IN (6,21)) 
ORDER BY title 

行ID 6中,當我指定WHERE id NOT IN 6

+0

的MySQL不支持'NOT IN':http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#function_not-in – 2012-04-27 00:58:42

+0

你得到的錯誤是什麼? – 2012-04-27 00:58:46

+0

哦,也許是我的查詢。它返回我不想要的行。 – user1022585 2012-04-27 00:59:22

回答

1

它看起來是因爲你的周圍使用$quest_completed變量撇號的一樣,這實際上正在執行的查詢可能是NOT IN ('6,21'),而不是NOT IN (6,21)(其我想是你想要的?)。

不同的是,第一個版本返回記錄其中id不等於該字符串'6,21',而第二版本返回記錄其中id既不是數6也不數21

+0

這是問題..大聲笑謝謝 – user1022585 2012-04-27 01:06:48

+0

很好聽!感謝您[接受此答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 – eggyal 2012-04-27 01:10:37

0

NOT IN,也可以理解爲邏輯NOT(一些條件),如

NOT ID in ('A', 'B', 'C', 'D') 

所以,如果你是書面遇到問題,只要嘗試換...