Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果';在';是多个';或';s、 多个';和';MySQL中有什么?_Mysql_Sql - Fatal编程技术网

如果';在';是多个';或';s、 多个';和';MySQL中有什么?

如果';在';是多个';或';s、 多个';和';MySQL中有什么?,mysql,sql,Mysql,Sql,我陷入了一个与MySQL有关的问题。接受询问 select * from orders where customer_id in (256, 255, 236); 在不同的网站上,根据IN operator的解释,他们提到(例如)IN的行为类似于多个或多个条件的快捷方式 MySQL中是否有任何类型的运算符适用于多种和条件 上述查询将返回与customer_id 256、255和236相关的所有行。但如果我只想返回这三个客户ID共有的行,我尝试了以下查询 select * from orders

我陷入了一个与MySQL有关的问题。接受询问

select * from orders where customer_id in (256, 255, 236);
在不同的网站上,根据IN operator的解释,他们提到(例如)IN的行为类似于多个或多个条件的快捷方式

MySQL中是否有任何类型的运算符适用于多种和条件

上述查询将返回与customer_id 256、255和236相关的所有行。但如果我只想返回这三个客户ID共有的行,我尝试了以下查询

select * from orders where customer_id = 256 and customer_id = 255 and customer_id = 236;
但我知道这是行不通的


所以我想知道我是否可以使用快捷方式来处理多个和多个条件(无需使用group by和HAVE)?

您可以使用聚合:

select o.order_id
from orders o
where o.customer_id in (256, 255, 236)
group by o.order_id
having count(distinct o.customer_id) = 3;  -- "3" = all customers

这需要聚合(或
join
s或窗口函数),因为您希望比较不同行上的数据。在这种情况下,一个简单的
WHERE
子句是不够的。

您可以使用聚合:

select o.order_id
from orders o
where o.customer_id in (256, 255, 236)
group by o.order_id
having count(distinct o.customer_id) = 3;  -- "3" = all customers

这需要聚合(或
join
s或窗口函数),因为您希望比较不同行上的数据。在这种情况下,一个简单的
WHERE
子句是不够的。

这样的条件总是错误的。列不能同时为256和255等。显示一些示例表数据和预期结果。(作为格式化文本,而不是图像。)SQL确实有
ALL
操作符,用于检查值是否与所有值进行比较(比较可以是=,>,<等等)。@jarlh我的数据库的实际实现是不同的,而且更复杂。所以在这里发布演示数据需要一点时间。但是,将显示相同的。这样的条件总是错误的。列不能同时为256和255等。显示一些示例表数据和预期结果。(作为格式化文本,而不是图像。)SQL确实有
ALL
操作符,用于检查值是否与所有值进行比较(比较可以是=,>,<等等)。@jarlh我的数据库的实际实现是不同的,而且更复杂。所以在这里发布演示数据需要一点时间。但是,我会展示同样的东西。这太棒了。早些时候,我尝试使用
having count(order_id)>1
之类的方法来检查出现的情况。但你的方法更有效。谢谢:)太棒了。早些时候,我尝试使用
having count(order_id)>1
之类的方法来检查出现的情况。但你的方法更有效。谢谢:)