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

如何对表中列中的日期进行排序?(时间戳)


请注意,我不是要求按日期对行进行排序,而是在询问如何在记录中交换日期,以便所有日期都按正确的顺序排列;无需更改任何其他内容。


所以;例如:


id     foo      bar

1      A        03-03-2030

2      B        01-01-2010

3      C        02-02-2020

成为。。。


id     foo      bar

1      A        01-01-2010

2      B        02-02-2020

3      C        03-03-2030

首选解决方案使用直接 MySQL 或 MySQL 和 PHP。


慕少森
浏览 108回答 1
1回答

Cats萌萌

您可以使用CTE使用MySQL查询更新表,该CTE计算每行的,排序方式为 和 ;将每个值替换为具有相应按行号排序的值:ROW_NUMBER()idbarbaridbarWITH 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 dJOIN CTE c1 ON c1.id = d.idJOIN CTE c2 ON c2.rn_bar = c1.rn_idSET d.bar = c2.bar输出(对于您的示例数据):id  foo     bar1   A       2010-01-012   B       2020-02-023   C       2030-03-03
打开App,查看更多内容
随时随地看视频慕课网APP