【发布时间】:2020-10-18 23:50:15
【问题描述】:
好的...我想根据他们的条件订购三列。
- 第 1 列 (INT) = last_reboot
- 第 2 列 (BOOL) = 在线检查
- 第 3 列 (INT) = drive_use
我希望“last_reboot”为默认值并按降序排列。如果“onlinecheck”= 0,我希望它位于查询的顶部,否则由“last_reboot” desc 排序。最后,如果“drive_use”大于 90,我希望它在“last_reboot”上方和“onlinecheck”下方排序 = 0,否则按“last_reboot”排序。
示例目标:
| last_reboot | onlinecheck | drive_use |
----------------------------------------------
| 15 | 0 | 80 |
| 90 | 1 | 91 |
| 320 | 1 | 80 |
| 45 | 1 | 50 |
| 20 | 1 | 89 |
我可以通过使用 ORDER BY FIELDS 来实现其中的一半,但是一旦我引入了“drive_use”,我就无法让它正常运行。如果它不为空,“drive_use”总是排在“last_reboot”之上。
SELECT * FROM <table> ORDER BY FIELD (onlinecheck, 0) DESC, (drive_per > 90), last_reboot DESC;
非常感谢任何和所有帮助。如果需要进一步解释,请告诉我。
【问题讨论】:
标签: mysql sql database select sql-order-by