我試圖解決的SQL查詢下面收集逗號「」從給定的表分離的數據
其中有三個表表1,表2和表3中給定的圖像如在表1有兩列user_id和user_name。在表2中,有三列id1(自動生成),user_id(與table1的user_id相同)和role_id。在表3中,還有三列id2(自動生成),role_id(與table2的role_id相同)和role_name。最後,我期待一個結果表作爲給定的結果表,其中有一個選擇的行,並用逗號「,」分隔。請給出想法或查詢來解決這個問題。這裏
我試圖解決的SQL查詢下面收集逗號「」從給定的表分離的數據
其中有三個表表1,表2和表3中給定的圖像如在表1有兩列user_id和user_name。在表2中,有三列id1(自動生成),user_id(與table1的user_id相同)和role_id。在表3中,還有三列id2(自動生成),role_id(與table2的role_id相同)和role_name。最後,我期待一個結果表作爲給定的結果表,其中有一個選擇的行,並用逗號「,」分隔。請給出想法或查詢來解決這個問題。這裏
理念是For XML path
這將concat
你rows
爲CSV
SELECT ', ' + d.roleid as Concat_roleid
FROM table3 d
FOR XML PATH('')
SELECT a.userid,
Stuff((SELECT ', ' + d.roleid
FROM table3 d
WHERE d.id2 = c.id2
FOR XML PATH('')), 1, 2, '') Roleid,
Stuff((SELECT ', ' + e.Rolename
FROM table3 e
WHERE e.id2 = c.id2
FOR XML PATH('')), 1, 2, '') Rolename
FROM table1 a
JOIN table2 B
ON a.userid = b.userid
JOIN table3 C
ON c.roleid = b.roleid
GROUP BY a.userid
我不明白的東西,是什麼意思? – 2014-12-02 16:16:40
@JiteshUpadhyay - 這裏的東西是用來刪除**領先的逗號**。看看這個http://msdn.microsoft.com/en-in/library/ms188043.aspx。您可以使用任何其他字符串函數(如「Right」,「Substring」)來刪除該前導逗號 – 2014-12-02 16:18:35
選擇你的數據庫:MySQL或SQL服務器。並適當標記。 – 2014-12-02 15:54:16
您好,非常感謝您的回覆。我想爲SQL服務器做 – 2014-12-02 15:55:21
http://stackoverflow.com/search?q=[sql-server]+group_concat – 2014-12-02 15:55:42