我有三张桌子.
posts
| id | title |
+---------+-----------+
| 1 | hello |
| 2 | goodbye |
+---------+-----------+
posts_tags
| tag_id | post_id |
+---------+-----------+
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
+---------+-----------+
tags
| id | name |
+---------+-----------+
| 1 | news |
| 2 | photos |
+---------+-----------+
Run Code Online (Sandbox Code Playgroud)
我希望能够选择帖子,但结果就是这样
post.id post.title tags
------------------------------------
1 hello news,photos
2 goodbye photos
Run Code Online (Sandbox Code Playgroud)
就像是
SELECT *,
GROUP_CONCAT(tags.name) AS tags
FROM posts
LEFT JOIN posts_tags
ON posts.id = posts_tags.post_id
LEFT JOIN tags
ON posts_tags.tag_id = tags.id
Run Code Online (Sandbox Code Playgroud)
似乎没有正常工作.请指教,谢谢你的时间:)
Phi*_*oss 11
您需要GROUP BY在查询中添加一个子句:
SELECT posts.*,
GROUP_CONCAT(tags.name ORDER BY tags.name) AS tags
FROM posts
LEFT JOIN posts_tags
ON posts.id = posts_tags.post_id
LEFT JOIN tags
ON posts_tags.tag_id = tags.id
GROUP BY posts.id
Run Code Online (Sandbox Code Playgroud)
我还在上面添加了一个命令GROUP_CONCAT,以按照您指定的顺序连接标记.
| 归档时间: |
|
| 查看次数: |
2048 次 |
| 最近记录: |