首页  >  问答  >  正文

如果一列为空,如何对 SQL 结果进行排序?

我对查询结果的排序有疑问。 我有 3 列需要排序:

ORDER BY level DESC, logo DESC, bName ASC

我想先通过 DESC 订购最高“级别”,这很有效。

之后,我想订购“徽标”是否为空,但不订购我的查询所执行的徽标内容。

最后我想按 bName ASC 订购

所以我想要的输出是这样的:

1. Level-3 has logo bName a-z
2. Level-3 has no Logo bName a-z
3. Level-2 has logo bName a-z
4. Level-2 has no Logo bName a-z
5. Level-1 has logo bName a-z
6. Level-1 has no Logo bName a-z

是否可以仅通过一个干净的查询来完成此操作?

相应的示例输入:

级别 徽标 bName
3 测试.jpg 测试名称
2 测试名称
1 12test.jpg 另一个测试名称
1 3test.jpg 无名氏
2 约翰·多伊
2 渡渡鸟
3 5test.jpg 测试名称
1 sdsd-test.jpg 测试名称

在某些情况下,列徽标为空(例如 = '' ),但不是 NULL

P粉969666670P粉969666670178 天前331

全部回复(1)我来回复

  • P粉745412116

    P粉7454121162024-04-05 22:01:17

    您尚未提供有关数据的信息以及“徽标为空”的实际含义,但原则是:

    ORDER BY 
      level DESC, 
      case when logo <> '' then 1 else 2 end,
      bName ASC;

    回复
    0
  • 取消回复