我有一个学生表,在[名称,地址,TotalFees]列中有8条记录。
即使我在单个表上执行两个相同的ORDER BY
查询,我也会获得两个不同的输出。我已附上以下截图。
在具有不同输出的同一表上进行相同的查询:
答案 0 :(得分:2)
您遇到的问题是order by
的键不能唯一地定义每一行。特别是,对于大多数行重复使用“khar”(结果表明您使用的是不区分大小写的排序规则)。
在SQL数据库中,排序不稳定。稳定排序是使用相同密钥保留值的原始排序的排序。由于排序不稳定,因此对于相同的键,结果可以按任何顺序出现。
为什么排序不稳定?回想起来,这很容易。 SQL表和结果集表示无序集。没有初始排序,因此排序不稳定。
解决此问题的常规方法是在order by
:order by address, id
中添加唯一ID作为最终密钥。但是,根据您的数据,尚不清楚唯一的密钥是什么。
答案 1 :(得分:0)
地址和名称的组合不会产生重复,因此您可以尝试这一点,
select *From student
order by address,name
select top 3 * From student
order by address,name