![](/img/trans.png)
[英]How do I efficiently select unique row/record data from 2 mysql tables and return one merged result, ordered by timestamp?
[英]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”樣式,其內容如下:
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”樣式,說明:
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.