使用OR的多个where子句,而不是AND

时间:2013-09-14 14:02:56

标签: mysql sql

首先,我不是SQL专家,所以可能我错过了一些括号或其他简单愚蠢的东西; - )

任何人都可以告诉我为什么这样做并返回4行:

SELECT ppa.products_id FROM products_propattributes ppa 
WHERE ( (options_id = "11" AND options_values_id = "18") 
OR (options_id = "4" AND options_values_id = "4") )

而且这个没有,虽然它应该匹配1行:

SELECT ppa.products_id FROM products_propattributes ppa 
WHERE ( (options_id = "11" AND options_values_id = "18") 
AND (options_id = "4" AND options_values_id = "4") )

任何帮助都将受到高度赞赏! 提前谢谢..

BAS

3 个答案:

答案 0 :(得分:3)

在第二个查询中,您只有AND个,因此options_id = "11"options_id = "4"都不可能匹配。

当然与options_values_id = "18"options_values_id = "4"相同。

答案 1 :(得分:2)

查找options_id = "11" AND options_id = "4"行的第二个查询。这是不可能的,因为options_id列云只有一个值。

答案 2 :(得分:2)

因为每行中的列中只能有一个可能的值。如果您希望使用ID

获取同时具有两个条件的OR
SELECT ppa.products_id 
FROM products_propattributes ppa 
WHERE (options_id = "11" AND options_values_id = "18") OR 
      (options_id = "4" AND options_values_id = "4") 
GROUP BY ppa.products_id
HAVING COUNT(*) = 2