【发布时间】:2019-01-13 16:48:47
【问题描述】:
我已经进行了大量的谷歌搜索,但我似乎无法正确理解这一点..
我有三张桌子:
comm_messages:
- room_id:integer
- created_at:datetime
comm_visitors:
- room_id:integer
- user_id:integer
- updated_at:datetime
我想知道对于给定的 user_id,有多少新消息(在用户访问房间后创建的消息)?
示例
如果我有这样的数据:
comm_messages:
+---------+------------------+
| room_id | created_at |
+---------+------------------+
| 1 | 20.11.2018 |
| 1 | 20.12.2018 |
| 2 | 21.12.2018 |
| 3 | 24.12.2018 |
| 4 | 19.05.2018 |
+---------+------------------+
comm_visitors:
+---------+---------+------------+
| user_id | room_id | updated_at |
+---------+---------+------------+
| 1 | 1 | 03.11.2018 |
| 1 | 3 | 25.12.2018 |
| 1 | 4 | 11.05.2018 |
| 2 | 1 | 01.01.2019 |
| 2 | 2 | 03.11.2018 |
| 2 | 4 | 03.11.2018 |
+---------+---------+------------+
对于user_id = 1,我应该得到3,对于user_id = 2,我应该得到2。
我目前的尝试一直围绕着这样的事情:
SELECT COUNT(comm_messages.id)
FROM comm_messages LEFT JOIN comm_visitors
ON comm_messages.room_id = comm_visitors.room_id
WHERE comm_visitors.user_id = 1
AND comm_visitors.updated_at > comm_messages.updated_at;
但那不好..
【问题讨论】:
-
请提供一些示例数据和预期结果
-
@VamsiPrabhala 添加了
标签: sql postgresql join