【问题标题】:MySQL sorting date then by part numberMySQL排序日期然后按零件号
【发布时间】:2015-07-15 09:05:17
【问题描述】:

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

身份证件时间 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

所以,结果应该是这样的:

身份证件时间 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

拜托,我将不胜感激。

【问题讨论】:

  • 分享你的查询码,你试过了。
  • 我看不到矛盾
  • 我所说的矛盾的意思是,我告诉 sql 按时间排序,然后说不,现在按零件排序。 “那么它是什么”时间或部分。

标签: php mysql sequence


【解决方案1】:

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

您想要的既不是按零件名称的字母顺序对结果进行排序,也不是按时间戳升序/降序。您所要求的不能通过 SQL 中的排序操作来完成。按顺序排列零件不是排序。

【讨论】:

  • 我很难相信这种查询不能用mysql来实现。必须有某种方法可以将它们按我需要的顺序排列??!
  • 需要发生的是,零件需要按顺序排序,然后我需要从每个零件组中推断出最新时间(因此 JJJK_0102 将是 08:59:27)。然后它需要按时间排序。这将实现我的目标,但是如何??
【解决方案2】:

我终于找到了解决办法。不是我理想的解决方案,但它的工作原理永远不会少。

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多