MySQL 按零件号排序日期

MySQL sorting date then by part number

基本上我希望将这些部分(下方)分组,然后按时间顺序排列,从列表顶部的最新时间开始。

ID  Parts       Time
1   SMH_2010    08:59:18    
2   JJK_0101    08:59:26
3   FTD_0002    08:59:24    
4   JJK_0102    08:59:27    
5   FTD_0001    08:59:22    
6   SMH_2010    08:59:20    
7   FTD_0003    08:59:25    

因此,结果如下:

ID    Parts     Time
1   JJK_0101    08:59:26    
2   JJK_0102    08:59:27

3   FTD_0001    08:59:22    
4   FTD_0002    08:59:24    
5   FTD_0003    08:59:25

6   SMH_2010    08:59:20
7   SMH_2010    08:59:18

拜托,如有任何帮助,我将不胜感激。

你问的不是传统意义上的排序。您的第一次尝试按时间对结果排序,如果同时出现多个时间戳,则按部分排序。

您想要的结果既不按零件名称的字母顺序排序,也不按时间戳 ascending/descending 排序。 SQL中的排序操作无法完成你所要求的。按顺序排列部件不是排序。

我终于找到了解决办法。这不是我理想的解决方案,但它仍然有效。

我添加了另一个名为 max_date 的字段,在插入每个新部分时默认为“now()”。

我从正在插入的当前部分创建一个前缀,例如“SMH_”作为一个名为 $prefix = “SMH_”的变量;

我有另一个直接跟在插入后面的查询,它再次更新 max_date,通过“now()”,其中前缀类似于 $prefix

UPDATE parts SET max_date = now() WHERE prefix LIKE '%$prefix%'

为了显示结果,我使用了以下内容:

SELECT * FROM parts ORDER BY parts.max_date DESC, parts.part ASC