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