gpt4 book ai didi

mysql - 在 MySQL 中对两个表中的数据进行分组

转载 作者:行者123 更新时间:2023-12-01 09:12:23 26 4
gpt4 key购买 nike

我有 2 个表,postsposts_flagsposts 包含用户发表的帖子行。现在,如果某个帖子被举报,用户可以举报该帖子,从而在 posts_flags 表中创建一个标志。所以基本上,posts_flags 可以为同一个帖子有多个标志。

现在,我要做的是从 posts 表中获取 posts 行并添加一列以显示已标记的列。为了获得该列,我尝试使用 post_idpostsposts_flags 进行 INNER JOIN。但是,我现在遇到了一个问题,因为 posts_flags 可以为同一个帖子包含多行。

如何获取这些数据?下面是我的表格的示例结构以及我想要实现的目标。

帖子表

| post_id | post_title | post_body |
| 1 | title a | something |
| 2 | title b | something |
| 3 | title c | something |

posts_flags 表

| post_id | user_id |
| 1 | 4 |
| 1 | 5 |
| 2 | 5 |

我正在努力实现的目标

|  post_id | post_title | post_body | flagged
| 1 | title a | something | 1
| 2 | title b | something | 1
| 3 | title c | something | 0

谢谢!

最佳答案

不要加入整个表,而是加入一个子查询,每个帖子 ID 只返回 1 行。

它还需要是 LEFT JOIN 而不是 INNER JOIN,因此结果将包含没有标志的帖子的行。

SELECT p.*, pf.post_id IS NOT NULL AS flagged
FROM posts AS p
LEFT JOIN (
SELECT DISTINCT post_id
FROM posts_flags) AS pf ON p.post_id = pf.post_id

关于mysql - 在 MySQL 中对两个表中的数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57860010/

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