REFER: postgresql: 有序结果
我问了这个问题并接受了答案。好吧,在问我的时候,我的想法有所不同,但我被接受的答案说服了。好吧,我最近意识到接受的答案不是我想要的。好吧,我重申一下这个问题:
我有一张看起来像的桌子:
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
- root_id 应该放在一个组中,并且该组的第一行应该有 is_root = 1。
- 组应根据根 DESC 的时间戳进行排序,但根的子项应按 ASC 排序(基于时间戳)
The relevant columns for the question is root_id, is_root, timestamp.
任何帮助表示赞赏。
谢谢