gpt4 book ai didi

sql - 如何选择具有 AND 条件的数据到多行

转载 作者:行者123 更新时间:2023-11-29 14:21:17 25 4
gpt4 key购买 nike

我有表 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 byhaving 来做到这一点:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com