我问了这个问题并接受了答案。好吧,在问我脑子里有什么不同的东西时,我被接受的答案说服了。好吧,我最近意识到接受的答案不是我想要的。好吧,我正在重申这个问题:
我的桌子看起来像是:
id | user_id | activity_id | activity_type | root_id | is_root | timestamp
----+---------+-------------+---------------+---------+---------+-----------
1 | 1 | 1 | text | 1 | 1 | 200
2 | 2 | 2 | text | 1 | 0 | 206
3 | 3 | 3 | text | 1 | 0 | 210
4 | 2 | 10 | text | 10 | 1 | 50
5 | 1 | 11 | text | 10 | 0 | 90
6 | 3 | 12 | text | 10 | 0 | 100
7 | 3 | 20 | text | 20 | 1 | 120
8 | 2 | 21 | text | 20 | 0 | 130
9 | 3 | 22 | text | 20 | 0 | 150
10 | 3 | 22 | text | 20 | 0 | 150
11 | 3 | 22 | text | 20 | 0 | 190
我正在寻找的输出是:
id | user_id | activity_id | activity_type | root_id | is_root | timestamp
----+---------+-------------+---------------+---------+---------+-----------
1 | 1 | 1 | text | 1 | 1 | 200
2 | 2 | 2 | text | 1 | 0 | 206
3 | 3 | 3 | text | 1 | 0 | 210
7 | 3 | 20 | text | 20 | 1 | 120
8 | 2 | 21 | text | 20 | 0 | 130
11 | 3 | 22 | text | 20 | 0 | 150
9 | 3 | 22 | text | 20 | 0 | 150
10 | 3 | 22 | text | 20 | 0 | 190
4 | 2 | 10 | text | 10 | 1 | 50
5 | 1 | 11 | text | 10 | 0 | 90
6 | 3 | 12 | text | 10 | 0 | 100
The relevant columns for the question is root_id, is_root, timestamp.
感谢任何帮助。
由于
答案 0 :(得分:3)
select
id,
user_id,
activity_id,
activity_type,
t.root_id,
is_root,
timestamp
from t
inner join (
select root_id, max(timestamp) as root_id_max_timestamp
from t
group by root_id
) root_id_timestamp on t.root_id = root_id_timestamp.root_id
order by
root_id_max_timestamp desc,
is_root = 1 desc,
timestamp
;
您的输出样本数据与输入不同。例如,输入id#7的时间戳为190,而其中一个输出为120.因此,在考虑此查询错误之前,请检查输出。