如何处理这个棘手的MySQL查询[基于同一表的优先级连接]?

时间:2011-10-20 21:38:05

标签: mysql concatenation

在深入Python脚本为我做这个之前,我想知道我们是否可以通过MySQL查询单独实现这一目标吗?

我有一个每个ID有多个记录的表。我想将多个值连接成一个记录并根据优先级连接?还在我这儿?

表可能会有所帮助:

ID Value Priority
1  AA    1
1  KK    3
1  CC    2 
2  AA    1
3  EE    4  
3  FF    5 
2  HH    6

期望的输出:

ID Concat_Value 
1  AA, CC, KK
2  AA, HH
3  EE, FF

优先顺序逐渐增加。数字越小,优先级越高。

1 个答案:

答案 0 :(得分:3)

很容易就是馅饼。

SELECT id, GROUP_CONCAT(`value` ORDER BY priority) as concat_value
FROM table1
GROUP BY id

请参阅:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

如果你想在group_concat中有空格,你必须更改分隔符:

SELECT 
  id
  , GROUP_CONCAT(`value` ORDER BY priority SEPARATOR ', ') as concat_value
FROM table1
GROUP BY id