MySQL GROUP BY查询问题

时间:2011-05-06 21:29:01

标签: mysql sql group-by

我有一个表格,其中包含颜色名称(例如蓝绿色)和相关的主要颜色(蓝色)。有时,颜色条目可以与其关联的原色(红色,红色)相同。

如何进行GROUP BY PRIMARY_COLOR,其中每个组的COLOR按字母顺序排列...除非COLOR和PRIMARY_COLOR匹配 - 此条目必须位于分组的顶部。

示例:

COLOR    PRIMARY_COLOR
------------------------
teal     blue
magma    red
sky      blue
red      red
magenta  red

应该结果......

COLOR    PRIMARY_COLOR
------------------------
sky      blue
teal     blue
red      red
magenta  red
magma    red

3 个答案:

答案 0 :(得分:4)

Order by (ASSOCIATEDCOLOR = COLOR), ASSOCIATEDCOLOR

答案 1 :(得分:1)

ORDER BY CASE WHEN COLOR=PRIMARY_COLOR THEN 0 ELSE 1 END, PRIMARY_COLOR

答案 2 :(得分:0)

SELECT color, primary_color
FROM colors
ORDER BY
    primary_color,
    color LIKE primary_color DESC,
    color