如果'IN'是多个'OR'的快捷方式,那么MySQL中多个'AND'的快捷方式又是什么呢?

时间:2019-10-02 12:15:21

标签: mysql sql

我陷入与MySQL有关的问题。进行查询

select * from orders where customer_id in (256, 255, 236);

在各种网站上,在IN运算符的解释下,他们提到(例如https://www.w3schools.com/sql/sql_in.asp),IN充当多个OR条件的快捷方式。

MySQL中是否有用于多种AND条件的运算符?

上面的查询将返回与customer_id 256、255和236相关的所有行。但是,如果我只想返回这三个customer_id共有的行,则尝试执行以下查询。

select * from orders where customer_id = 256 and customer_id = 255 and customer_id = 236;

但是我知道这行不通。

所以我想知道我是否可以针对多个AND条件使用快捷方式(不使用分组依据和拥有)?

1 个答案:

答案 0 :(得分:2)

您可以使用聚合:

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或窗口函数),因为您要比较不同行上的数据。在这种情况下,简单的WHERE子句是不够的。