我在MySQL中有以下数据表:
id name
1 john
1 jack
2 ankit
我需要以下输出:
id name
1 john,jack
2 ankit
我知道我可以使用GROUP_CONCAT执行此操作但是,我需要上面的输出而不使用GROUP_CONCAT。
请帮我解决这个问题。
答案 0 :(得分:0)
疯狂的问题的疯狂回答!
SELECT id, MAX(NAME) FROM (
SELECT
IF(@previd <> id, @name := NULL, @name := @name),
(IF(@name IS NULL, @name := NAME, @name := CONCAT(@name, ', ', NAME))) NAME, id, @previd := id FROM mytable,
(SELECT @name := NULL, @previd := 0) s
ORDER BY id
) d
GROUP BY id
答案 1 :(得分:0)
在SQL中
SELECT
id,
STUFF((SELECT ', ' + CAST(name AS VARCHAR(25)) [text()]
FROM table1
WHERE type = a.type
FOR XML PATH(''), TYPE).value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
FROM table1 a
GROUP BY id