SQL SELECT ORDER BY多列,取决于其他列的值
技术问答
235 人阅读
|
0 人回复
|
2023-09-12
|
我有一个包含以下列表:% a' f3 M/ g! f# C
id | 重新访问(布尔)| FL(十进制)| FR(十进制)| RL(十进制)| RR(十进制)| 日期
% n: u* B, U, m9 B2 v4 m0 S; j( H0 p我需要写一个SELECT该句子将对多列进行ORDER BY,这取决于 revisit字段值。
- a9 k0 L, a2 l. G3 r[ol]ORDER BY’revisit’DESC-该字段的值为1的记录将是第一个,其次是0
, P5 g$ B9 L+ H' p0 I" V( u1 A* @如果’revisit’= 1,则按FL,FR,RL和RR存在的最小值排序。因此,如果在这些字段中记录1的值分别为4.6、4.6、3.0、5.0,记录2的值分别为4.0、3.1、3.9和2.8.记录2将首先返回,因为它在四列中都有最小值。
: X9 B" L/ W' v; X0 u/ A如果’revisit’= 0,按日期排序-第一个是最旧的日期。[/ol]到目前为止,我只对 revisit如果 revisit” = 0,按日期排序,但当 revisit” =
' |+ {. ^$ m) V. w$ w( v1.同时按四列排序。
. L( |! g' o" W0 K% ^SELECT *FROM vehicleORDER BY`revisit` DESC,CASE WHEN `revisit` = 1 THEN `FL` `FR` `RR` `RL` END ASC,CASE WHEN `revisit` = 0 THEN `date` END ASC相反,它似乎按四列的总和排序(在给定加号时有意义)。因此,我如何同时按照这些列(而不是总和)排序这些列。
. S% ?5 F. k* o: y7 T3 @我希望这是合理的。!2 g5 c3 `% \+ R9 r2 {4 l
! ~9 _6 _0 ^8 W2 r4 X7 H, T 解决方案: |
|
|
|
|
|