如何在PostgreSQL中按用户分组

时间:2018-09-01 12:18:35

标签: sql postgresql

我有两个表user和message。我想按时间选择用户的消息,并按userId分组。我使用postgresql,只想选择一条时间已达到最大值的消息。这是我的表和sql查询:

 users                                   messages
id name surname e-mail                  id userId    title    time  token
1   joe  joe     bla@hotmail.com          1    1      title1   null     1
                                          1    1      title2   null     2
                                          1    1      title3   null     3
                                          1    1      title4   null     4

 select *,max(m.time) from users u join messages m on u.id=m.userId group by m.userId

按用户标识选择消息组时出现SQL错误

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找这个东西:

select *
  from messages m
 where (m.userId, m.time) in 
(
 select m.userId,max(m.time) 
   from users u join messages m 
     on u.id=m.userId 
  group by m.userId
);

id  userid  title   time                        token
--  ------  ------  --------------------------- -----
1   1       title2  2018-09-01T13:37:21.075024Z 2

SQL Fiddle Demo