基本上我的问题是
id sid string
5 1 AAA
6 1 BBB
7 2 CCC
8 3 ZZZ
9 3 EEE
获得这样的输出
sid str1 str2
1 AAA BBB
其中groupby sid
答案 0 :(得分:0)
尝试以下数据透视查询:
SELECT t.sid,
CASE WHEN t.str1 > 0 THEN 'AAA' ELSE NULL END AS str1,
CASE WHEN t.str2 > 0 THEN 'BBB' ELSE NULL END AS str2,
CASE WHEN t.str3 > 0 THEN 'CCC' ELSE NULL END AS str3
FROM
(
SELECT t.sid,
SUM(CASE WHEN t.string = 'AAA' THEN 1 ELSE 0 END) AS str1,
SUM(CASE WHEN t.string = 'BBB' THEN 1 ELSE 0 END) AS str2,
SUM(CASE WHEN t.string = 'CCC' THEN 1 ELSE 0 END) AS str3
FROM yourTable t
GROUP BY t.sid
) t
答案 1 :(得分:0)
我不知道如何在飞行中创建新列,如果可能的话,但您可以使用GROUP_CONCAT获得类似的结果
SELECT sid, GROUP_CONCAT(`string` SEPARATOR ',') AS string_cols FROM t GROUP BY sid
然后在您的应用程序逻辑中,您需要将string_cols
除SEPARATOR
分成多个字段。