我想过滤表中的一列以获取几个值,并且仅当所有这些值都存在时才显示结果。如果缺少一个或多个,则返回零个结果。
示例表
+----+--------+----------+
| id | Fruit | Color |
+----+--------+----------+
| 1 | apple | red |
| 2 | mango | yellow |
| 3 | banana | yellow |
+----+--------+----------+
“错误”代码示例:(必须返回 3 行)
select Fruit FROM table WHERE Color = red AND Color = yellow
但是
select Fruit FROM table WHERE Color = red AND Color = green
必须返回 0 行。
(如果我使用 select Fruit FROM table WHERE Color = red OR Color = green
我得到 1 行,这不是我需要的)
我将 PHP 与表单一起使用,其中用户检查代表同一列的不同值的不同复选框。因此,当他选择多个复选框时,所有这些值都应该在结果集中,否则不应给出任何结果。
谢谢,
安德鲁
最佳答案
试试这个:
SELECT Fruit
FROM yourtable
WHERE Color IN ('red', 'yellow')
AND (
SELECT COUNT(DISTINCT Color)
FROM yourtable
WHERE Color IN ('red', 'yellow')
) = 2
另一种选择:
SELECT Fruit FROM yourtable
WHERE Color IN ('red', 'yellow')
AND EXISTS (SELECT NULL FROM yourtable WHERE Color = 'red')
AND EXISTS (SELECT NULL FROM yourtable WHERE Color = 'yellow')
关于php - 过滤一列上的多个值。所有值都必须存在,否则返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4580407/