簡體   English   中英

如何在MySQL中將多條記錄中的有序數據返回一條記錄中?

[英]How to return ordered data from multiple records into one record in MySQL?

我有一個MySQL數據庫,其中有一個調查問卷表,其中包含三個重要字段(為清楚起見,將其重命名):SURVEY_TAKER_ID,QUESTION_NUMBER和RESPONSE。 假設一個3個問題的調查為例,它看起來像這樣:

SURVEY_TAKER_ID | QUESTION_NUMBER | RESPONSE
----------------------------------------
101               1                 Apple
102               1                 Orange
103               1                 Banana
101               2                 Morning
102               2                 Evening
103               2                 Afternoon
101               3                 Red
102               3                 Blue
103               3                 Yellow

我想創建一個SELECT查詢,以按問題編號的順序輸出每個調查參與者的ID和響應,例如:

101,Apple,Morning,Red
102,Orange,Evening,Blue
103,Banana,Afternoon,Yellow

我知道SQL Server具有FOR XML ,這可以使此操作變得更容易,但是我的數據庫位於MySQL中,我必須承認,起初我並不真正擅長SQL。 誰能給我一個示例查詢,該查詢將產生上面的輸出,或為我提供一種實現方法?

非常感謝任何可以提供幫助的人...

...周傑倫

嘗試這個:

SELECT CONCAT(SURVEY_TAKER_ID, ',', RESPONSE)
FROM (SELECT SURVEY_TAKER_ID, GROUP_CONCAT(RESPONSE) RESPONSE
      FROM (SELECT * FROM SURVEY ORDER BY SURVEY_TAKER_ID, QUESTION_NUMBER) A 
      GROUP BY SURVEY_TAKER_ID
     ) A 

SURVEY_TAKER_ID,帶有“ Question_Number:RESPONSE”樣式,其內容如下:

SQL小提琴

SELECT SURVEY_TAKER_ID
      ,GROUP_CONCAT(CONCAT(QUESTION_NUMBER, ': ', RESPONSE) ORDER BY QUESTION_NUMBER SEPARATOR ', ') AS RESPONSES
FROM Table1
GROUP BY SURVEY_TAKER_ID
ORDER BY SURVEY_TAKER_ID

SURVEY_TAKER_ID帶有“ RESPONSE”樣式,說明:

SQL小提琴

SELECT SURVEY_TAKER_ID
      ,GROUP_CONCAT(RESPONSE ORDER BY QUESTION_NUMBER SEPARATOR ', ') AS RESPONSES
FROM Table1
GROUP BY SURVEY_TAKER_ID
ORDER BY SURVEY_TAKER_ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM