我想用一个查询将所有帖子标签加载到MySQL服务器中。
现在,我决定使用LEFT JOIN,因为如果没有标签与我的帖子相关联那么我会有那个帖子,或者您对此有任何其他建议?
这是我的问题:
SELECT * FROM tags, tags_map
LEFT JOIN posts on posts.cid = tags_map.pid
WHERE tags.tag_id = tags_map.tid
现在问题是重复数据,例如,如果帖子有三个标签,那么帖子本身将重复三次!
在这种情况下,我应该为每个帖子运行另一个查询来获取标签吗?或者我可以使用单个查询获得所有这些但没有重复数据?
答案 0 :(得分:1)
我想你想要group_concat
SELECT posts.*,
(select GROUP_CONCAT(tags.name)
from tags,
tags_map
LEFT JOIN on posts.cid = tags_map.pid
WHERE tags.tag_id = tags_map.tid) as tagCombo
from posts
如果您发布架构,示例数据和预期结果,理想情况下作为SQLFiddle,我可以检查。