android - 多个 order by 和 null 值使用下一个字段排序,而不是第一个或最后一个

标签 android sqlite

我有如下表格,

|Product |Brand  |Order           |Description          |
---------------------------------------------------------
|TTT     | CCC   | 1              | FFF                 |
|EEE     | DDD   | 2              | DDD                 |
|ZZZ     | BBB   | 99             | NULL                |
|NNN     | FFF   | 99             | NULL                |
|QQQ     | EEE   | NULL           | NULL                |
|BBB     | FFF   | 1              | FFF                 |
|BBB     | GGG   | 1              | CCC                 |
|GGG     | NULL  | NULL           | NULL                |
|MMM     | BBB   | 99             | NULL                |

我想按订单递增、描述递增、品牌递增、产品递增、 但 Order null 和 99 应视为一组,然后按 Brand 和 Product 排序。

预期结果应该如下所示,

|Product | Brand |Order           |Description          |
---------------------------------------------------------
|BBB     | GGG   | 1              | CCC                 |
|TTT     | CCC   | 1              | FFF                 |
|BBB     | FFF   | 1              | FFF                 |
|EEE     | DDD   | 2              | DDD                 |
|MMM     | BBB   | 99             | NULL                |
|ZZZ     | BBB   | 99             | NULL                |
|QQQ     | EEE   | NULL           | NULL                |
|NNN     | FFF   | 99             | NULL                |
|GGG     | NULL  | NULL           | NULL                |

null 总是最先或最后,但我需要一个查询以根据每个条件使用不同的字段排序。

最佳答案

此类异常可以用 CASE expressions 处理.

Order为NULL时,应该像99一样处理,所以把NULL换成99。 当 Order 为 NULL 或 99 时,应该忽略描述,因此在这种情况下,将 Description 替换为固定值:

SELECT ...
ORDER BY CASE WHEN "Order" IS NULL THEN 99 ELSE "Order" END,
         CASE WHEN "Order" IS NULL OR "Order" = 99 THEN 0 ELSE Description END,
         Brand,
         Product;

关于android - 多个 order by 和 null 值使用下一个字段排序,而不是第一个或最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38690126/

相关文章:

android - Rxjava : Insert only works with single but not with completable

c# - UWP - SQLite - 尝试加载格式不正确的程序

Android:如何为特定主机使用 Wifi 网络,但让手机使用移动网络进行其他所有操作

android - htaccess 针对代理的保护

java - Android GPS 应用程序有时会崩溃

python返回函数(sql语句错误)

android - Android Studio gradle项目中导入drag-sort-listview库

android - 在没有连接的情况下向手机广播数据包

python - 将 CSV 文件写入 PDF 文档

sql - 将sqlite数据库转换为sdf文件