Mysql SQL根据其他列的值按多列选择顺序
我有一个包含以下列的表: id |回访(bool)| FL(十进制)| FR(十进制)| RL(十进制)| RR(十进制)|日期 我需要编写一个SELECT语句,根据“重访”字段的值对多个列进行排序Mysql SQL根据其他列的值按多列选择顺序,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我有一个包含以下列的表: id |回访(bool)| FL(十进制)| FR(十进制)| RL(十进制)| RR(十进制)|日期 我需要编写一个SELECT语句,根据“重访”字段的值对多个列进行排序 ORDER BY“REVICTION”DESC-此字段值为1的记录将位于第一位,值为0的记录位于第二位 如果“重新访问”=1,则按FL、FR、RL和RR中存在的最低值排序。因此,如果记录1在这些字段中的值为4.6、4.6、3.0、5.0,而记录2的值为4.0、3.1、3.9和2.8,则记录2将首先返
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
相反,它似乎是按四列的总数排序的(这在给定加法符号时是有意义的),所以我如何同时按这些列排序,作为单个列,而不是总和
我希望这是有意义的,谢谢 在当前查询中,按四列之和排序。您可以使用获取最低值,因此您的order by子句可以如下所示:
SELECT *
FROM vehicle
ORDER BY
`revisit` DESC,
CASE WHEN `revisit` = 1 THEN LEAST(`FL`, `FR`, `RR`, `RL`) END ASC,
CASE WHEN `revisit` = 0 THEN `date` END ASC
当然,这只能按最低值排序。如果两行都共享相同的最低值,则对第二个最低值不进行排序。要做到这一点要困难得多,我并没有真正从你的问题中了解到你是否需要它。你需要使用多个案例。如果我这样做,我声明案例的顺序会影响结果的顺序吗?这四列中的任何一列都可以保存该行中的最低值,我需要将该值与另一行中的最低值进行排序,该行可能位于这四列中的另一列中。