表:
id | tag | pk
----+-----+----
1 | 111 | 1
2 | 111 | 2
2 | 112 | 3
3 | 111 | 4
4 | 333 | 5
4 | 334 | 6
4 | 111 | 7
5 | 335 | 8
... for 1,000,000 rows
期望的输出
id | tag | pk
----+-----+----
1 | 111 | 1
2 | 111 | 2
3 | 111 | 4
4 | 111 | 7
5 | 335 | 8
... for limit of 500 rows
我想返回不同的id,但我想首先返回tag = 111的行作为distinct;否则,第一个发现会做。我还想将输出限制为500行。
我看了工会,相交......然而,却无法产生所需的结果。
答案 0 :(得分:1)
在95877
子句中使用CASE
语句:
ORDER BY
SELECT * FROM t;
┌────┬─────┬────┐
│ id │ tag │ pk │
├────┼─────┼────┤
│ 1 │ 111 │ 1 │
│ 2 │ 111 │ 2 │
│ 2 │ 112 │ 3 │
│ 3 │ 111 │ 4 │
│ 4 │ 333 │ 5 │
│ 4 │ 334 │ 6 │
│ 4 │ 111 │ 7 │
│ 5 │ 335 │ 8 │
└────┴─────┴────┘
(8 rows)