ORDER BY查询给出两个不同的输出

时间:2016-07-01 10:13:49

标签: sql sql-server sql-server-2008 sql-order-by

我有一个学生表,在[名称,地址,TotalFees]列中有8条记录。

即使我在单个表上执行两个相同的ORDER BY查询,我也会获得两个不同的输出。我已附上以下截图。

在具有不同输出的同一表上进行相同的查询:

enter image description here

2 个答案:

答案 0 :(得分:2)

您遇到的问题是order by的键不能唯一地定义每一行。特别是,对于大多数行重复使用“khar”(结果表明您使用的是不区分大小写的排序规则)。

在SQL数据库中,排序不稳定。稳定排序是使用相同密钥保留值的原始排序的排序。由于排序不稳定,因此对于相同的键,结果可以按任何顺序出现。

为什么排序不稳定?回想起来,这很容易。 SQL表和结果集表示无序集。没有初始排序,因此排序不稳定。

解决此问题的常规方法是在order byorder by address, id中添加唯一ID作为最终密钥。但是,根据您的数据,尚不清楚唯一的密钥是什么。

答案 1 :(得分:0)

地址和名称的组合不会产生重复,因此您可以尝试这一点,

select *From student
order by address,name

select top 3 * From student
order by address,name