从同一类别中选择多个产品?

时间:2018-06-24 13:59:30

标签: mysql sql innodb

声明尝试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'

1 个答案:

答案 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'