Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 带大小写表达式的order by_Sql_Sqlite_Case Expression - Fatal编程技术网

Sql 带大小写表达式的order by

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 |

我有一个复杂的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   |   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相同的结果?只有当结果相同时