为了账号安全,请及时绑定邮箱和手机立即绑定

对 MySQL 表中的日期进行排序(不按日期排序)

对 MySQL 表中的日期进行排序(不按日期排序)

PHP
慕少森 2022-09-03 15:53:28
如何对表中列中的日期进行排序?(时间戳)请注意,我不是要求按日期对行进行排序,而是在询问如何在记录中交换日期,以便所有日期都按正确的顺序排列;无需更改任何其他内容。所以;例如:id     foo      bar1      A        03-03-20302      B        01-01-20103      C        02-02-2020成为。。。id     foo      bar1      A        01-01-20102      B        02-02-20203      C        03-03-2030首选解决方案使用直接 MySQL 或 MySQL 和 PHP。
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以使用CTE使用MySQL查询更新表,该CTE计算每行的,排序方式为 和 ;将每个值替换为具有相应按行号排序的值:ROW_NUMBER()idbarbaridbar


WITH CTE AS (

  SELECT id, bar,

         ROW_NUMBER() OVER (ORDER BY id) AS rn_id,

         ROW_NUMBER() OVER (ORDER BY bar) AS rn_bar

  FROM data

)

UPDATE data d

JOIN CTE c1 ON c1.id = d.id

JOIN CTE c2 ON c2.rn_bar = c1.rn_id

SET d.bar = c2.bar

输出(对于您的示例数据):


id  foo     bar

1   A       2010-01-01

2   B       2020-02-02

3   C       2030-03-03


查看完整回答
反对 回复 2022-09-03
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信