正确的列的mysql语法不等于两个值中的任何一个

时间:2013-07-17 13:46:52

标签: php mysql sql

我有一张带有颜色列的'汽车'表。我正在尝试构建一个查询,显示所有有4扇门的汽车,但排除所有在其颜色栏中记录“红色”或“黑色”的汽车。

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

这似乎不起作用,但我不确定它是否因为我的错误是否在我的代码中有其他东西弄乱了它。这样做可以吗?

感谢

6 个答案:

答案 0 :(得分:6)

您将条件用单引号括起来是无效的。您应该只在引号中包含字符串。对于非红色或黑色部分,您可以使用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'

答案 1 :(得分:3)

您可以使用NOT IN,也可以使用引号错误地使用backtics`作为列和&表名。

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

答案 2 :(得分:2)

您必须明确说明必须比较哪些字段

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

你的报价也有问题。我已经纠正了他们

答案 3 :(得分:2)

在您的 条件中,您将'cars.colour != red OR black'置为错误

这应该像

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

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

答案 4 :(得分:1)

尝试

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

答案 5 :(得分: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")