2013-07-17 27 views
0

我有一個表'汽車'與顏色列。我試圖建立一個查詢,它將顯示所有有4個門的汽車,但排除所有在其顏色欄中記錄有「紅色」或「黑色」的汽車。正確的mysql語法的列不等於兩個值

SELECT * FROM 'cars' 
WHERE 'cars.doors = 4' 
AND 'cars.colour != red OR black' 

這似乎並不工作,但我不知道它,因爲我已經完全搞錯了是否有其他的東西在我的代碼搞亂它。這樣做可以嗎?

謝謝

+0

您有其他的SQL語法錯誤也是如此。請學會告訴另一個字面意思。 –

回答

6

你用單引號括起來的條件是無效的。你應該只用引號括起字符串。對於不紅或黑色部分可以使用NOT IN()

SELECT * FROM `cars` 
WHERE cars.doors = 4 
AND cars.colour NOT IN('red', 'black') 

或者你可以做的很長的路要走,注意使用ANDOR因爲OR將不適合你想要的東西。

AND cars.colour != 'red' AND cars.colour != 'black' 
+0

我想你應該從''cars''刪除引號' –

+0

@ypercube謝謝,更新。 – MrCode

2

你要告訴明確,哪些字段必須比較

SELECT * FROM `cars` 
WHERE `cars`.´doors` = 4 
AND `cars`.´colour` != 'red' AND `cars`.´colour` != 'black' 

你有你的報價有問題,太。我已經糾正了他們

+0

AND與OR相比的優先級可能會帶來這種無法預料的結果。 – Kickstart

+1

感謝您的更正:)我錯過了這一點(複製/粘貼) –

3

您可以使用NOT IN,也可以使用引號錯誤使用backtics`爲列&表名。

SELECT * FROM `cars` 
WHERE `cars`.`doors` = 4 
AND `cars`.`colour` NOT IN ('red','black') 
2

在你其中條件已放置'cars.colour != red OR black'錯誤的

這應該是像

SELECT * FROM cars 
WHERE doors = 4 
AND colour != red AND colour != black 

OR

SELECT * FROM cars 
WHERE doors = 4 
AND colour NOT IN('red', 'black') 
+1

您的兩個例子在功能上並不相同。在第一個例子中應該使用'AND'而不是'OR'。 – MrCode

+0

@MrCode:謝謝,我已經更新了我的答案...... –

1

儘量

SELECT * FROM `cars` 
WHERE cars.doors = 4 
AND cars.colour NOT IN ("red","black"); 
1
SELECT * FROM cars WHERE (cars.doors = 4) AND (cars.colour NOT IN ("red","black")) 

和其他解決方案:

SELECT * FROM cars WHERE (cars.door = 4) AND (cars.colour <> "red") AND (cars.colour <> "black")