gpt4 book ai didi

php - 显示关系的关系的 MySQL 结果

转载 作者:行者123 更新时间:2023-11-29 14:58:06 25 4
gpt4 key购买 nike

如果我有三个表,并且我试图循环遍历所有帖子:

posts: post_id, post_title, post_content
tag_relations: post_id, tag_id
tags: tag_ig, tag_name

如果每个帖子都有多个标签,我将如何显示每个帖子的每个标签?

例如,我必须如何设置 SQL 查询,以及如何打印结果?使用多个查询会更容易吗?

最佳答案

MySQL 提供了有用的 GROUP_CONCAT()函数,您可能想按如下方式使用:

SELECT    p.post_id, p.post_title, GROUP_CONCAT(tag_name SEPARATOR ', ') tags
FROM posts p
JOIN tag_relations tr ON (tr.post_id = p.post_id)
JOIN tags t ON (t.tag_id = tr.tag_id)
GROUP BY p.post_id;

测试用例:

CREATE TABLE posts (post_id int, post_title varchar(50));
CREATE TABLE tags (tag_id int, tag_name varchar(50));
CREATE TABLE tag_relations (post_id int, tag_id int);

INSERT INTO posts VALUES (1, 'post 1');
INSERT INTO posts VALUES (2, 'post 2');
INSERT INTO posts VALUES (3, 'post 3');

INSERT INTO tags VALUES (1, 'mysql');
INSERT INTO tags VALUES (2, 'sql');
INSERT INTO tags VALUES (3, 'javascript');
INSERT INTO tags VALUES (4, 'python');

INSERT INTO tag_relations VALUES (1, 1);
INSERT INTO tag_relations VALUES (1, 2);
INSERT INTO tag_relations VALUES (2, 3);
INSERT INTO tag_relations VALUES (3, 2);
INSERT INTO tag_relations VALUES (3, 4);

结果:

+---------+------------+-------------+
| post_id | post_title | tags |
+---------+------------+-------------+
| 1 | post 1 | mysql, sql |
| 2 | post 2 | javascript |
| 3 | post 3 | sql, python |
+---------+------------+-------------+
3 rows in set (0.00 sec)

@Alfonso de la Osa在下面的评论中指出,您可以使用 left outer joins而不是inner joins获取没有任何标签的帖子。

关于php - 显示关系的关系的 MySQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4019715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com