SQLite,选择消息线程

时间:2014-09-22 18:36:59

标签: sql sqlite

我有一张表:

消息表:

id | message_text | sender_name | time

我以前也会有一个Threads表,我会单独查询。我想完全取消Threads表,因为它只是保留了收到的最后一条消息。

我想为每个sender_name返回1行,其中该sender_name的时间最长。我怎样才能做到这一点? 注意,我想使用SELECT *获取所有行

例如,如果我有这些数据:

sender_name | time

  bob | 0
  bob | 1
  bob | 30

  tim | 15
  tim | 18
  tim | 20

julie | 7
julie | 12
julie | 25

然后从我的查询中,我想得到:

  bob | 30
  tim | 20
julie | 25

我还需要获得具有该名称和时间的其他列。

2 个答案:

答案 0 :(得分:2)

SELECT sender_name, MAX(time) time
FROM table
GROUP BY sender_name

使用SELECT *可能(当然未经测试)

SELECT *
FROM table
GROUP BY sender_name
HAVING time = MAX(time)

不确定这是否可行。

答案 1 :(得分:0)

您可以在子查询中获得最大时间条目,然后为每个发件人获取该时间的所有列

select * from tableA A
inner join
( 
select sender_name, max(time) as time
from tableA
group by sender_name
)T
on A.time = T.time
and A.sender_name = T.sender_name