distinct on with case when



我需要你帮我处理一下有条件的" distinct on "。例如,我有一个"用户"表。

<表类> id 名称 年龄 tbody><<tr>1约翰172山姆183约翰124山姆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;

是的,我知道这将从表中选择两次,但我认为在这种情况下更好,除非你观察到使用这个查询的性能非常差。

最新更新