我需要你帮我处理一下有条件的" distinct on "。例如,我有一个"用户"表。
<表类>
id
名称
年龄
tbody><<tr>1 约翰 17 2山姆 18 3 约翰 12 4山姆 19 表类>
把这个放在条件中是可能的,但是在我看来,这会导致不好的可读性。
我更愿意在这里使用UNION ALL
来清楚地分割查询的这两个部分:
SELECT DISTINCT ON (name) id, name, age
FROM users
WHERE age > 17
UNION ALL
SELECT id, name, age
FROM users
WHERE age <= 17
ORDER BY id;
是的,我知道这将从表中选择两次,但我认为在这种情况下更好,除非你观察到使用这个查询的性能非常差。