我有一个mysql数据库,有两个表:songideen,kommentare。在“songiden”你可以储存歌曲,在“kommentare”你可以评论它们。两个表都通过左连接链接。
如何合并行(如果一首歌有两个或多个注释),以便所有注释在一行内用“,”分隔?在本例中,我想合并第二行和第三行:
Name Arbeitstitel Datum mp3 ID Kommentare KommentarID
Lukas Titeltest 2016-06-06 Link 1 comment 1
Jannik Titeltest2 2016-07-06 Link2 2 comment2 2
Jannik Titeltest2 2016-07-06 Link2 2 comment3 2
Andi Titeltest3 2016-07-20 Link3 3 comment4 3
我经常这样试,但没用:
$sql = "SELECT songideen.Name, songideen.Arbeitstitel, songideen.Datum, songideen.mp3, songideen.ID, GROUP_CONCAT(kommentare.Kommentar SEPARATOR ',') AS KommentarIDs, kommentare.KommentarID
FROM songideen
LEFT JOIN kommentare
ON songideen.ID=kommentare.KommentarID
GROUP BY kommentare.KommentarID";
最佳答案
你需要按songideen.ID
分组。因为songideen
表中有记录,而kommentare
表中没有任何注释。
SELECT
songideen.Name,
songideen.Arbeitstitel,
songideen.Datum,
songideen.mp3,
songideen.ID,
GROUP_CONCAT(kommentare.Kommentar SEPARATOR ',') AS KommentarIDs,
kommentare.KommentarID
FROM songideen
LEFT JOIN kommentare ON songideen.ID = kommentare.KommentarID
GROUP BY songideen.ID ;
注:
在您的案例中,您将结果集分组为
kommentare.kommentarID
。对于songideen
表中的记录,如果在kommentare
表中没有任何注释,则会导致NULL
的值。因此,您的最终结果集将包含那些在kommentare.kommentarID
表中有相应注释的记录,以及在kommentare
表中找到的所有NULL
条目的一个条目。关于php - 使用2个表合并具有相同id的mysql行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38540174/