鉴于此表:
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)
我想只获取那些image_id,其中image id是(2,3)中的任何一个,但只有那个image_id,它具有'22ffcc' and '2200cc'针对该图像id的两种颜色
在给出的例子中,我想要的结果是 2
但是它给了我 2,2,3
我们可以and以in某种方式使用吗?...默认情况下它使用or
您的问题的典型解决方案是为每个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
看到修改过的小提琴
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |