作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有表 cars_colors (car_id integer,color_id integer)。
它显示了汽车有哪些颜色。数据示例:
car_id, color_id
151, 1
151, 2
151, 8
190, 1
190, 2
190, 3
这意味着 - Car №151 的颜色 ID 为 1,2,8,Car №190 的颜色 ID 为 1,2,3。
我需要查询来显示汽车的 car_id,这些汽车都有一些 color_id。
示例:我需要所有 color_id 为 1 和 2 的汽车,我应该返回 car_id 151,190
注意:我应该在简单查询中定义 color_id - 例如 in (1,2,3....99,100)
最佳答案
您可以使用 group by
和 having
来做到这一点:
select car_id
from car_colors
where color_id in (1, 2)
group by car_id
having count(distinct color_id) = 2;
编辑:
这种方法的一般形式如下所示:
select car_id
from car_colors
group by car_id
having sum(case when color_id = 1 then 1 else 0 end) > 0 and
sum(case when color_id = 2 then 1 else 0 end) > 0 and
sum(case when color_id = 3 then 1 else 0 end) = 0;
这是一个您需要颜色 1 和 2 但不允许颜色 3 的示例。您可能会看到如何将其概括为各种不同的可能性。
关于sql - 如何选择具有 AND 条件的数据到多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755628/
我是一名优秀的程序员,十分优秀!