[英]MySQL - GROUP_CONCAT with joins
我的問題與MySQL非常相似:是否可以group_concat多行? ,但我無法理解小組聯合會如何運作。
我的實際數據集很難解釋 - 我將使用一組簡化的表和關系作為示例。
說我有一張桌子photos
id filename
1 bob.jpg
2. ken.png
3. lisa.jpg
4. jim.jpg
...
和一個表tags
id title
1 family
2 friends
3 school
4 california
...
還有一座叫做photo_tags
的橋梁
photo tag
1 2
1 3
1 4
2 1
3 1
我想要這樣的行:
photo_id filename tags
1 bob.jpg 2,3,4
2 ken.png 1
3 lisa.jpg 1
4 jim.jpg (NULL)
要么...
photo_id filename tags
1 bob.jpg friends,school,california
2 ken.png family
3 lisa.jpg family
4 jim.jpg (NULL)
我最初的猜測是這樣的:
SELECT photos.filename,
GROUP_CONCAT(photo_tags.tag) AS associated_tags
FROM photos
LEFT OUTER JOIN tags
ON tags.photo = photos.id
GROUP BY photo_tags.tag
但是(對於知道自己在做什么的人來說可能很明顯),這些都行不通。 經過一些研究,並參考上面的鏈接,我嘗試了各種這樣的排列:
SELECT
file_name,
GROUP_CONCAT(photo_tag_ids) AS associated_tags
FROM (
SELECT
photos.filename AS file_name,
photo_tags.tag AS photo_tag_ids
FROM
photos
INNER JOIN photo_tags
ON photo_tags.photo= photos.id
) whatever
GROUP BY file_name
ORDER BY file_name;
TYIA。
SELECT photos.filename,
GROUP_CONCAT(photo_tags.tag) AS associated_tags
FROM photos
LEFT OUTER JOIN tags ON tags.photo = photos.id
GROUP BY photos.filename
您必須按每個行唯一的列進行分組,並且可以在組中構建其他列的group_concat。 因此,將您的group by
更改為photos.filename
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.