我陷入与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条件使用快捷方式(不使用分组依据和拥有)?
答案 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
子句是不够的。