我有一个博客帖子的标签字段.标签具有唯一的ID,但其displayName可能会重复.我想要的是一个查询,选择帖子,在all_tags字段中,我们得到(id,displayName)的对象是这样的:
id1,name1;id2,name2;id3,name3
我的查询看起来像:
select ....
CONCAT_WS(';', DISTINCT (CONCAT_WS(',',tags.id,tags.displayName))) AS all_tags
Join ...post content ...
Join ...post_tags ...
Join ...tags ...
ORDER BY posts.id
这一行导致问题:
CONCAT_WS(';', DISTINCT (CONCAT_WS(',',tags.id,tags.displayName))) AS all_tags
我应该如何修改?
有些人使用内部(SELECT .. FROM),但正如我所听到的,这是无效的
SELECT `posts`.*,`categories`.*,`creators`.*,`editors`.*
CONCAT_WS(';', DISTINCT GROUP_CONCAT(CONCAT_WS(',',tags.id,tags.displayName))) AS all_ids
FROM (`posts`)
LEFT JOIN `languages` ON `posts`.`language_id`=`languages`