我有 3 个类似这样的表格 -
- 内容
- cid
- 数据
- 内容标签
- cid
- tid
- 标签
- tid
- 标签
我尝试从内容表中选择 5 个项目,同时显示与内容关联的每个标签。这是我所拥有的 -
从内容中选择 c.*、t.tag AS c LEFT JOIN contenttags AS ct ON c.cid = ct.cid LEFT JOIN 标签 AS t ON ct.tid = t.tid LIMIT 5
但我似乎得到的是一大堆重复的行,唯一的区别是标签。我认为理想情况下,所有标签都可以在sql中合并到一个字段中吗?我不知道,我是不是搞错了?
最佳答案
您可以使用GROUP_CONCAT()
函数,它将返回以逗号分隔的标签:
SELECT c.*, GROUP_CONCAT(t.tag) AS Tags
FROM content AS c
LEFT JOIN contenttags AS ct ON c.cid = ct.cid
LEFT JOIN tags AS t ON ct.tid = t.tid
GROUP BY c.cid
LIMIT 5
关于php/mySQL 如何从数据库中获取多个项目的所有标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5241380/