SQL Bike Color示例

时间:2016-01-12 11:28:32

标签: sql distinct

我有一个SQL教科书示例,但它似乎非常复杂。 该表有列:

Bike_ID(主键),Color_WheelColor_FrameColor_CablesColor_GearboxColor_BrakesColor_Lamps,{ {1}},Color_PaddleColor_Chain和其他人......

我只想选择至少有6种颜色不同的行。因此,9种颜色列中至少有6个值应该是不同的。

这似乎在SQL中非常复杂。在Matlab或Java中,使用Color_Saddlesetdiff()然后计算结果是微不足道的。我认为它可能是SQL中的一个内容 - 它可以完成吗?

1 个答案:

答案 0 :(得分:0)

要查找至少包含6种不同颜色的自行车,请为每种零件颜色选择UNION ALL。执行GROUP BY检查HAVING子句中不同颜色的数量:

select * from tablename
where Bike_ID in
(
    select Bike_ID
    (
    select Bike_ID, Color_Wheel as color from tablename
    union all
    select Bike_ID, Color_Frame as color from tablename
    ...
    union all
    select Bike_ID, Color_Saddle as color from tablename
    )
    group by Bike_ID
    having count(distinct color) >= 6
)