mysql 基于3个属性的订单表[已关闭]

u1ehiz5o  于 12个月前  发布在  Mysql
关注(0)|答案(2)|浏览(123)

已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

2天前关闭。
Improve this question
嗨,我有下面的表格,
| 文件名|修改日期|优先|
| --|--|--|
| 一|2022-10-11 2022-10-11| 1 |
| 一|2022-10-03 2022-10-03 2022-10-03| 1 |
| 一|2022年10月2日| 1 |
| B| 2022-10-11 2022-10-11| 3 |
| B| 2022年10月1日| 3 |
| C| 2022-10-11 2022-10-11| 2 |
| D| 2022-10-11 2022-10-11| 4 |
| F| NULL| 4 |
我想根据MODIFIED_DATE、PRIORITY和FILE_NAME对表进行排序。
比如说,
| 文件名|修改日期|优先|
| --|--|--|
| 一|2022-10-11 2022-10-11| 1 |
| C| 2022-10-11 2022-10-11| 2 |
| B| 2022-10-11 2022-10-11| 3 |
| D| 2022-10-11 2022-10-11| 4 |
| 一|2022-10-03 2022-10-03 2022-10-03| 1 |
| 一|2022年10月2日| 1 |
| B| 2022年10月1日| 3 |
| F| NULL| 4 |
最有效的方法是什么?

vc9ivgsu

vc9ivgsu1#

对我来说,最有效似乎是唯一合理的,即。

order by modified_date desc, priority, file_name

字符串

[编辑,在您修改要求并包含NULL值之后]

对于modified_date中的NULL值,对数据进行排序的一个选项是

order by modified_date is null asc, modified_date desc, priority, file_name

FILE_NAME  MODIFIED_DATE     PRIORITY
---------- --------------- ----------
A          2022-10-11               1
C          2022-10-11               2
B          2022-10-11               3
D          2022-10-11               4
A          2022-10-03               1
A          2022-10-02               1
B          2022-10-01               3
F                                   4


看看fiddle

lxkprmvk

lxkprmvk2#

看看示例数据和预期输出,似乎您需要按以下方式进行排序

  • 第一个月
  • PRIORITY ASC
  • FILE_NAME ASC(不确定FILE_NAME,因为输出中不清楚)

最好是使用ORDER BY子句和ASC(默认)/DESC,这比你知道的任何其他方法都快(至少,我不知道任何其他方法)
所以你可以用

ORDER BY MODIFIED_DATE DESC NULLS LAST,
         PRIORITY,
         FILE_NAME

字符串

相关问题