使用"和"与"in"

Sam*_*ami 1 mysql sql

鉴于此表:

CREATE TABLE colors 
    (
     image_id int, 
     color char(6)
    );

INSERT INTO colors
(image_id, color)
VALUES
(1, '22ffcc'),
(2, '22ffcc'),
(2, '2200cc'),
(3, '22ffcc');
Run Code Online (Sandbox Code Playgroud)

SQL小提琴

我想只获取那些image_id,其中image id是(2,3)中的任何一个,但只有那个image_id,它具有'22ffcc' and '2200cc'针对该图像id的两种颜色

在给出的例子中,我想要的结果是 2

但是它给了我 2,2,3

我们可以andin某种方式使用吗?...默认情况下它使用or

VMa*_*Mai 5

您的问题的典型解决方案是为每个image_id计算颜色的不同值:

select image_id
from colors where color in ( '22ffcc' , '2200cc' )
and image_id in (2,3)
GROUP BY image_id
HAVING COUNT(DISTINCT color) = 2;    
Run Code Online (Sandbox Code Playgroud)

说明:要同时具有这两种颜色,计数数必须与IN值列表中的值相同.您可以使用HAVING不带的子句检查聚合函数的结果WHERE

看到修改过的小提琴