mysql - 从具有一对多关系的 3 个表中选择

标签 mysql sql

我有一个问题。在我的数据库中,我有 3 个表:

文章:

id  title  content  date

标签:

id  name

Tags_in_news:

id  news_id  tag_id

其中 news_id 是新闻表的外键,tag_id 是标签表的外键...如何选择文章及其附加的所有标签? 我创建了一个查询,但它为每个标签选择了一条新闻:

SELECT * FROM articles join tags_in_news
ON articles.id = tags_in_news.news_id
join tags on tags.id = tags_in_news.tag_id
ORDER BY date DESC

最佳答案

尝试 GROUP BY 文章和分组标签作为逗号分隔值
像这样:

SELECT 
date, a.title, GROUP_CONCAT(DISTINCT t.name) as tags_attached
FROM articles a 
JOIN tags_in_news tin ON a.id = tin.news_id
JOIN tags t ON t.id = tin.tag_id
GROUP BY a.id
ORDER BY date DESC

关于mysql - 从具有一对多关系的 3 个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535690/

相关文章:

sql - Django:根据相交对象(共同 friend )的数量排序项目

sql - 如何从 SQL Server 存储过程捕获打印消息?

sql - 为什么 BigQuery 中的 case 语句没有按预期运行?

MySQL 查询返回状态信息的总小时数

mysql - 跨多个节点的时间日志记录建模

mysql - 如何为以下 SQL 查询编写 HQL 查询?

java - 解析mysql控制台输出

mysql - 在 haproxy 中写入故障转移期间,正在进行的 mysql 事务会发生什么情况?

mysql - 在 mySQL 列中搜索特定内容

mysql - 在ubuntu 18.04上安装mariadb 10.3 gpg添加 key 错误gpg : keyserver receive failed: Server indicated a failure