mysql - 在 MySQL 中对两个表中的数据进行分组
问题描述
我有 2 张桌子,posts
并且posts_flags
. posts
包含用户发表的帖子行。现在,如果某个帖子被举报,用户可以举报该帖子,从而在posts_flags
表格中创建一个标志。所以基本上,posts_flags
同一个帖子可以有多个标志。
现在,我要做的是posts
从表中获取行posts
并添加一列以显示已标记的列。为了获得该专栏,我正在尝试使用posts
并posts_flags
使用post_id
. 但是,我现在遇到了一个问题,因为posts_flags
同一个帖子可以有多行。
我怎样才能得到这些数据?下面是我的表格的示例结构以及我想要实现的目标。
帖子表
| post_id | post_title | post_body |
| 1 | title a | something |
| 2 | title b | something |
| 3 | title c | something |
post_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 行。
它还需要是 aLEFT 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
推荐阅读
- javascript - 从 firestore 获取最后 10 个文件
- c++ - 需要 Ivalue 作为一元 '&' 操作数
- html - Linkedin html 分享标签忽略 url 并分享随机内容
- javascript - React configureStore2.default.firestore 不是一个函数
- c++ - 成员的默认初始化取决于类的其他成员的类型
- mongodb - OPLOG 在两个共享的相同 mongodb 项目中完全同步,当它不是 pub/sub 或集合声明时
- ios - 需要在构造函数中初始化@State var,但是@FetchRequest 还没有返回
- c++ - 嵌套后代的编译时计算
- regex - Find substring and delete parent substring using sed
- javascript - 函数选项中的 PHP 变量