按重要性顺序在一行中输出数据

时间:2019-04-26 19:57:28

标签: mysql sql

我试图按重要性顺序将多行中的数据转换为单行。

我正在使用多个表,并且能够将我需要的所有数据提取到一个表中-所以目前我正在使用一个表,其中所需的数据存在于多行中。例如,一个人可以扮演多个角色。但是,角色具有重要性顺序-我在正在使用的文件中添加了重要性顺序列。

我正在使用的文件如下:

ID      | FIRST   |LAST     | ROLE      | ORDER OF IMPORTANCE  
116     | Jamie   | Ansto   | PARAL     | 5  
116     | Jamie   | Ansto   | FMREMP    | 11    
153     | Alan    | Rond    | PAR       | 3  
153     | Alan    | Rond    | PARAL     | 5  
155     | Maureen | Aron    | GP        | 4  
155     | Maureen | Aron    | PARAL     | 5  
38      | William | Dry     | STU       | 8  
175     | Nathan  |Gong     | OTH       | 10  
175     |Nathan   |Gong     | FMRSTU    | 13  
175     |Nathan   | Gon     | FR        | 14  
308     | Bridget | Abad    | PAR       | 3  
308     | Bridget | Abad    | EMP       | 7  
370     | Matt    | Bodie   | BD        | 1  
370     | Matt    | Bodie   | AL        | 2  

我需要的是一个文件,该文件具有按重要性顺序在同一行上与一个人相关联的所有代码。
我要结束的事情是这样的:

ID      |FIRST   |LAST    |CODE1   |CODE2   |CODE3   |CODE4   
116     |Jamie   |Ansto   |PARAL   |FMREMP  
153    |Alan     |Rond    |PAR     |PARAL  
155    |Maureen |Aron     | GP     | PARAL  
381    |William |Dry      |STU  
175    |Nathan   |Gong    |OTH     |FMRSTU  |FR  
308    | Bridget |Abad    |PAR     |EMP  
370   | Matt     |Bodie   |BD      | AL  

我尝试使用Group_Concat,但是没有按我想要的顺序给出结果。任何帮助将不胜感激。

谢谢,
MG

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

SELECT *,GROUP_CONCAT(`ROLE` ORDER BY `ORDER_OF_IMPORTANCE` SEPARATOR ' ' ) 
FROM `table1` GROUP BY `ID`;

SEPARATOR ' '函数将为您提供类似OTH FMRSTU FR的结果。如果将其删除,而仅执行GROUP_CONCAT(ROLE ORDER BY ORDER_OF_IMPORTANCE),则结果将看起来像这样OTH,FMRSTU,FR