2011-05-06 140 views
1

我有一个包含颜色名称(如蓝绿色)和关联的主要颜色(蓝色)的表格。有时,颜色条目可以与其关联的主要颜色(红色,红色)相同。MySQL 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 
+1

你确定你需要一组由?我想你只是在做一个订单 – 2011-05-06 21:39:32

回答

4

Order by (ASSOCIATEDCOLOR = COLOR), ASSOCIATEDCOLOR

+0

我觉得我有点复杂。工作很好 – 2011-05-06 21:40:16

1
ORDER BY CASE WHEN COLOR=PRIMARY_COLOR THEN 0 ELSE 1 END, PRIMARY_COLOR 
0
SELECT color, primary_color 
FROM colors 
ORDER BY 
    primary_color, 
    color LIKE primary_color DESC, 
    color