gpt4 book ai didi

mysql - 当所有列都具有相同日期时,SQL 如何重新排列按日期排序的查询结果

转载 作者:行者123 更新时间:2023-11-29 21:09:40 24 4
gpt4 key购买 nike

在SQL中,我有一个包含2行的表,其中有一个日期列、一个整数列和一个varchar列。日期字段和整数字段对于两行具有完全相同的值,只有 varchar 字段不同。数据如下

no   date     message
1 1/1/2000 a
1 1/1/2000 b

当我查询时

从 table_name 中按 no 顺序搜索 *,查询结果与表中已有的结果相同

no   date     message
1 1/1/2000 a
1 1/1/2000 b

即当我按整数值排序时,我可以按相同的顺序检索数据

但是当我尝试按日期字段排序时(完全相同)然后我就变成这样了

no   date     message
1 1/1/2000 b
1 1/1/2000 a

它重新排列行。为什么会出现这种情况

最佳答案

“稳定排序”是一种当键具有相同值时保留正在排序的数据中行的原始顺序的排序(Wikipedia 有专门介绍这些算法的页面)。因此,您要问的是 SQL 中的排序是否稳定(或者为什么不稳定)。

答案很明显:SQL 中的排序不稳定。为什么这是显而易见的? SQL 表表示无序集。因此,表中没有要保留的顺序。

如果您想保留“原始排序”,则需要包含一个额外的唯一键来指定原始排序。如果您有一个自动递增的主键,那么这将是添加到您的order by的自然键:order by date,no

关于mysql - 当所有列都具有相同日期时,SQL 如何重新排列按日期排序的查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36497971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com