php - 过滤一列上的多个值。所有值都必须存在,否则返回零

标签 php sql mysql

我想过滤表中的一列以获取几个值,并且仅当所有这些值都存在时才显示结果。如果缺少一个或多个,则返回零个结果。

示例表

+----+--------+----------+
| 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/

相关文章:

php - Woocommerce 从共享购物车网址将商品添加到购物车?

php - 使用PHP进行跨域post数据

php - ChatGPT OpenAI 与 API 中的问题

sql - 复杂的 SQL 查询字符串内部连接公分母

mysql - SQL查询没有受到注入(inject),但是

mysql - Grails 2.3.2 : findOrCreate using Enums in Bootstrap

php - PHP公告: Undefined index: in a line

javascript - 使用 Web sql 和变量进行重复键更新

java - 通过 Java 小程序传递用户 ID 和密码的替代方案?

php - Postgresql 的 Mysql(Group By) 替代品?