按非唯一列选择顶级语句排序

时间:2010-08-19 23:41:17

标签: sql select sql-order-by

我有两个SQL查询

select * from table1
ORDER BY column1

Select top 10 * from table1
ORDER by column1

Column1是非唯一列,table1没有主键。

当我运行两个查询时,我得到的行以不同的顺序返回。我将此归因于排名标准(Order By)不是唯一的。

我想知道普通的SELECT语句在这种情况下用什么方法来确定行的输出顺序以及select top语句将使用什么方法。它只是随机的吗?

2 个答案:

答案 0 :(得分:2)

在非唯一的情况下,不应依赖行的输出顺序。

相反,强加您想要的顺序(通过在ORDER BY中包含其他列)

答案 1 :(得分:1)

考虑它是随机的 - 即使它不是在某些情况下,在没有ORDER BY请求的排序的情况下,DBMS不应该对结果的排序作出承诺。