仅当字段为NULL时,按NULL排序,然后在Postgresql中按名称排序

问题描述 投票:0回答:1

我在Postgresql中有以下排序:

ORDER BY verified_at NULLS FIRST, name ASC

我想要的是首先使所有记录都带有authenticated_at NULLS,但仅当字段verify_at不为null时,然后才按名称排序。如果authenticated_at不为空,我不希望authenticated_at具有名称优先权。

使用此代码,在显示NULL后,对名称的优先级为verifyed_at。实际上,是否可以使记录按名称排序,除了那些具有verify_at NULL的记录之外?

我想要的例子:

verified_at:     name:
NULL             Alex
NULL             Bernard
NULL             Toto
2018             Albert
2012             Boris
2015             Michel
2001             Lena
postgresql sql-order-by
1个回答
0
投票
您可以做:

order by (verified_at is not null)::int, name


0
投票
您可以通过CASE表达式订购:

ORDER BY CASE WHEN verified_at IS NULL THEN 0 ELSE 1 END, name

© www.soinside.com 2019 - 2024. All rights reserved.