声明尝试1:
似乎忽略了一切,无论来自哪个国家/地区,都能获得产品
SELECT *
FROM products
WHERE `country` = 'America' AND
product = 'Product 1' AND
product = 'Product 2' AND
completed = 'complete'
声明尝试2:
这样做的结果是返回0个结果,即使结果假设在那里。
SELECT *
FROM products
WHERE `country` = 'America' AND
product = 'Product 1' OR
product = 'Product 2' AND
completed = 'complete'
答案 0 :(得分:0)
由于product = product 1 AND product = product 2
,您的第一个查询在逻辑上是不正确的,其中子句逐行过滤,因此同一行不能同时在product列中包含两个值。
OR
条件,因此如果产品2在另一个国家/地区完成状态,则它会忽略国家/地区过滤条件,要更正您的查询,您需要按以下方式对OR
条件进行分组使用括号(condition 1 or condition 2) and some other condition
SELECT *
FROM products
WHERE `country` = 'America'
AND (product = 'Product 1' OR product = 'Product 2')
AND completed = 'complete'
或者您可以使用IN
子句简化条件
SELECT *
FROM products
WHERE `country` = 'America'
AND product IN('Product 1','Product 2')
AND completed = 'complete'