Sql 带大小写表达式的order by
我有一个复杂的orderby和case表达式Sql 带大小写表达式的order by,sql,sqlite,case-expression,Sql,Sqlite,Case Expression,我有一个复杂的orderby和case表达式 ORDER BY CASE WHEN field_1 = ? then 0 WHEN field_2 = ? then 1 ELSE 3 end ASC 我想按字段_3对内部结果进行排序 例如,我的桌子是- index | field_1 | field_2 | field_3 0 | car | red | 2 1 | hat | red | 5 2 |
ORDER BY CASE WHEN field_1 = ? then 0
WHEN field_2 = ? then 1 ELSE 3 end ASC
我想按字段_3对内部结果进行排序
例如,我的桌子是-
index | field_1 | field_2 | field_3
0 | car | red | 2
1 | hat | red | 5
2 | red | house | 4
还有红色的
因此,索引0和1将从大小写表达式中得到1,索引2将从大小写表达式中得到0
ORDER BY CASE WHEN field_1 = ? then 0
WHEN field_2 = ? then 1 ELSE 3 end ASC
我想按字段3再次排序,但顺序应该只在相同的值之间
因此,索引0,1应按字段_3排序
如何实现这一目标,有什么建议吗
结果应该是——
索引2->索引0->索引1我不确定我是否理解,但为什么不这么做呢
ORDER BY CASE WHEN field_1 = ? then 0
WHEN field_2 = ? then 1 ELSE 3 end ASC, field_3 ASC
如果两行或更多行的第一部分大小写相等,那么这些行将按字段_3排序。我不确定我是否理解,但为什么不这样做呢
ORDER BY CASE WHEN field_1 = ? then 0
WHEN field_2 = ? then 1 ELSE 3 end ASC, field_3 ASC
如果案例的第一部分对于两行或更多行是相等的,那么这些行将按字段_3进行排序。您还需要在案例语句的其他部分包括字段_3:
ORDER BY
CASE
WHEN field_1 = 'red' then -2
WHEN field_2 = 'red' then -1
ELSE field_3
END, field_3
我只是在字段_3列中的0或1可能是值的情况下使用了负值。您还需要将字段_3包含在case语句的else部分:
ORDER BY
CASE
WHEN field_1 = 'red' then -2
WHEN field_2 = 'red' then -1
ELSE field_3
END, field_3
我使用负值只是为了在字段_3列中0或1是可能的值。我为示例添加了一个结果。这会按字段_3对最终结果排序吗?或者只有与索引1、2相同的结果?只有当结果是sameI时,才添加一个示例结果。这会按字段_3对最终结果排序吗?或者只有与指数1、2相同的结果?只有当结果相同时