php/mySQL 如何从数据库中获取多个项目的所有标签?

标签 php mysql tags

我有 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/

相关文章:

javascript - 如何从 localStorage 获取复选框值

mysql - 如何在同一时间间隔内查找多个日志?

tags - 将标签添加到 MediaWiki 并在首页上显示标签云?

php - CKEDITOR - Uncaught Error : The specified element mode is not supported on element: "meta"

php - 在 PHP 中获取模型属性

c# - 如何使用最终类作为接口(interface)中的类型(php)

mysql - MySQL是设计上的分布式数据库吗

php - 为什么我的 MySQL 字段在更新时重置为 null?

php - PHP 中的 htmlspecialchars

java - chalice : <g:layoutTitle> does not work