MYSQL 带有 GROUP_CONCAT 选项的查询

MYSQL query with GROUP_CONCAT option

我在从表格中获取正确结果时遇到问题。

我有 3 个表:
Table:文章

|article_id          | article_title   |
|1                   | Title 1         |
|2                   | Title 2         |


Table: Invited_to_read

|user_id             | article_id      |
|10                  | 1               |
|20                  | 1               |
|10                  | 2               |
|10                  | 3               |


Table: 已读

|user_id             | article_id      |
|10                  | 1               |
|20                  | 1               |
|30                  | 1               |
|20                  | 2               |


如果被邀请的人都看过文章,我想得到的信息,结果必须为真,否则为假。

例如,如果我想获取 article_id = 1 的信息,那么我应该得到 TRUE,因为所有受邀用户都阅读了它。
例如,如果我想获取 article_id = 2 的信息,那么作为用户我应该得到 FALSE 至少一个邀请未确认阅读的用户。
例如,如果我想获取 article_id = 3 的信息,那么我应该得到 FALSE,因为没有任何用户确认阅读。

如果一些未被邀请阅读文章的用户确认了它,那它根本不重要。
所以底线。我需要知道是否所有受邀用户都阅读了文章。
谢谢。

您可以通过 LEFT JOINInvited_to_read table 转换为 readed table 并比较受邀用户的数量来获得您想要的结果阅读文章统计 阅读文章的用户数量:

SELECT i.article_id,
       COUNT(i.user_id) = COUNT(r.user_id) AS all_read
FROM Invited_to_read i
LEFT JOIN readed r ON r.user_id = i.user_id AND r.article_id = i.article_id
GROUP BY i.article_id
ORDER BY i.article_id

输出(对于您的示例数据):

article_id  all_read
1           1
2           0
3           0

Demo on SQLFiddle