【发布时间】:2015-07-16 13:32:54
【问题描述】:
我有一个包含以下列的表格:
标识 |重访 (bool) | FL(十进制)| FR(十进制)| RL(十进制) | RR (十进制) |日期
我需要编写一个 SELECT 语句,该语句将根据“revisit”字段的值对多个列进行 ORDER BY。
- ORDER BY 'revisit' DESC - 此字段值为 1 的记录将排在第一位,0 将排在后面
- 如果 '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 将首先返回,因为它在这四列中具有最低值。李>
- 如果 'revisit' = 0,则按日期排序 - 最早的日期将排在第一位。
到目前为止,我仅对“revisit”进行了正确排序,如果 'revisit' = 0 则按日期排序,但是当 'revisit' = 1 时同时按四列排序。
SELECT *
FROM vehicle
ORDER BY
`revisit` DESC,
CASE WHEN `revisit` = 1 THEN `FL` + `FR` + `RR` + `RL` END ASC,
CASE WHEN `revisit` = 0 THEN `date` END ASC
相反,它似乎是按四列的总和排序(考虑到加法符号,这将是有意义的),那么我如何同时对这些列进行排序,作为单独的列,而不是总和。
我希望这是有道理的,谢谢!
【问题讨论】:
-
您需要使用多个案例。
-
如果我这样做了,我声明案例的顺序会影响结果的顺序吗?这四列中的任何一列都可以保存该行中的最低值,我需要按该值与另一行中可能位于这四列中的另一列中的最低值进行排序。
标签: mysql sql sql-order-by