我有一个学生表,其中8个记录列[name,address,TotalFees]。ORDER BY查询给出两个不同的输出
即使我在单个表上执行两个相同的ORDER BY
查询,我会得到两个不同的输出。我附上了下面的截图。不同的输出在同一个表
相同的查询:
我有一个学生表,其中8个记录列[name,address,TotalFees]。ORDER BY查询给出两个不同的输出
即使我在单个表上执行两个相同的ORDER BY
查询,我会得到两个不同的输出。我附上了下面的截图。不同的输出在同一个表
相同的查询:
,你必须是为order by
密钥不唯一定义每一行的问题。特别是,大多数行重复“khar”(您的结果表明您正在使用不区分大小写的整理)。
在SQL数据库中,排序不稳定。稳定的排序是使用相同的键保留原始值的排序。由于排序不稳定,对于相同的密钥,结果可以按任何顺序排列。
为什么排序不稳定?回想起来很容易。 SQL表和结果集表示无序集。没有初始排序,所以排序不稳定。
解决此问题的常规方法是在order by
:order by address, id
中包含一个唯一的ID作为最终密钥。然而,用你的数据,目前还不清楚这个独特的关键是什么。
**但我唯一担心的是,为什么第二个输出表中的#3rd结果发生变化时,我想只反映第一个输出表中的前3个值。** –
@NiKhilKutewalla。 。 。因为'by by'具有键的重复值,所以每次运行时都会产生不同的结果。我认为这解释了发生的事情。 –
组合地址和名称不会产生重复,那么你可以试试这个,
select *From student
order by address,name
select top 3 * From student
order by address,name
**但我唯一担心的是,为什么第二个输出表中#3rd结果发生变化时,我只想从第一个输出表反映出前3个值。** –
他们两人正在产生结果与*您*已经在'ORDER BY'要求的保证是一致的。如果您需要更强大的保证,*您*必须通过向该'ORDER BY'添加额外的列或表达式来请求他们。 –
这是一个非常好的例子,有绝对没有隐式排序顺序**每个调用可能会返回一个不同的顺序,只要您的ORDER BY的列在它们的组合值中不是UNIQUE。 – Shnugo
......你的问题是什么? – Thinkeye