在InSQL中,我有一个包含2行的表,其中我有一个日期列,一个整数列和一个varchar列。日期字段和整数字段对于两个行具有完全相同的值,只有varchar字段不同。数据如下所示
no date message
1 1/1/2000 a
1 1/1/2000 b
当我查询
时从table_name开始按*搜索*, 查询结果与表中的结果相同
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
重新排列行。为什么会发生这种情况
答案 0 :(得分:0)
“稳定排序”是一种排序,它保留了当键具有相同值时要排序的数据中的行的原始顺序(Wikipedia有一个专门用于这些算法的页面)。因此,您询问SQL中的排序是否稳定(或者为什么不是这样)。
答案很明显:SQL中的排序不稳定。为什么这很明显? SQL表表示无序集。因此,表中没有用于保留的顺序。
如果要保留“原始排序”,则需要包含一个指定原始排序的附加唯一键。如果您有自动递增的主键,那么这将是添加到order by
order by date, no
的自然键。