我有一個表'汽車'與顏色列。我試圖建立一個查詢,它將顯示所有有4個門的汽車,但排除所有在其顏色欄中記錄有「紅色」或「黑色」的汽車。正確的mysql語法的列不等於兩個值
SELECT * FROM 'cars'
WHERE 'cars.doors = 4'
AND 'cars.colour != red OR black'
這似乎並不工作,但我不知道它,因爲我已經完全搞錯了是否有其他的東西在我的代碼搞亂它。這樣做可以嗎?
謝謝
我有一個表'汽車'與顏色列。我試圖建立一個查詢,它將顯示所有有4個門的汽車,但排除所有在其顏色欄中記錄有「紅色」或「黑色」的汽車。正確的mysql語法的列不等於兩個值
SELECT * FROM 'cars'
WHERE 'cars.doors = 4'
AND 'cars.colour != red OR black'
這似乎並不工作,但我不知道它,因爲我已經完全搞錯了是否有其他的東西在我的代碼搞亂它。這樣做可以嗎?
謝謝
你用單引號括起來的條件是無效的。你應該只用引號括起字符串。對於不紅或黑色部分可以使用NOT IN()
SELECT * FROM `cars`
WHERE cars.doors = 4
AND cars.colour NOT IN('red', 'black')
或者你可以做的很長的路要走,注意使用AND
不OR
因爲OR
將不適合你想要的東西。
AND cars.colour != 'red' AND cars.colour != 'black'
我想你應該從''cars''刪除引號' –
@ypercube謝謝,更新。 – MrCode
你要告訴明確,哪些字段必須比較
SELECT * FROM `cars`
WHERE `cars`.´doors` = 4
AND `cars`.´colour` != 'red' AND `cars`.´colour` != 'black'
你有你的報價有問題,太。我已經糾正了他們
AND與OR相比的優先級可能會帶來這種無法預料的結果。 – Kickstart
感謝您的更正:)我錯過了這一點(複製/粘貼) –
您可以使用NOT IN
,也可以使用引號錯誤使用backtics
`爲列&表名。
SELECT * FROM `cars`
WHERE `cars`.`doors` = 4
AND `cars`.`colour` NOT IN ('red','black')
在你其中條件已放置'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')
您的兩個例子在功能上並不相同。在第一個例子中應該使用'AND'而不是'OR'。 – MrCode
@MrCode:謝謝,我已經更新了我的答案...... –
儘量
SELECT * FROM `cars`
WHERE cars.doors = 4
AND cars.colour NOT IN ("red","black");
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")
您有其他的SQL語法錯誤也是如此。請學會告訴另一個字面意思。 –