为什么 SELECT TOP 1 . . . ORDER BY return table 中的第二行?

Why does SELECT TOP 1 . . . ORDER BY return the second row in the table?

当我 select 查询所有行时:

SELECT * 
FROM AFT_Contacts 
ORDER BY Tries

我看到了结果:

ID       Name     Area     Phone      Status    Tries    
------------------------------------------------------
117970   Adam     One      1111111111 New       0 
117971   Brian    Two      2222222222 New       0    
117972   Colin    Three    3333333333 New       0    
117973   David    Four     4444444444 New       0    
117974   Edward   Five     5555555555 New       0    
117975   Frank    Six      6666666666 New       0

但是查询:

SELECT TOP 1 * 
FROM AFT_Contacts 
ORDER BY Tries

Returns:

ID       Name     Area     Phone      Status    Tries
-----------------------------------------------------    
117971   Brian    Two      2222222222 New       0

为什么不 return Adam 的详细信息,因为它们在 table 中排在第一位?

在关系数据库中 tables 没有固有的顺序。您提供的 ORDER BY 在所有记录中都不同,实际上它在所有记录中都是相同的。所以返回结果的顺序仍然是不确定的和不可预测的table。因此 top 1 returns 一个不可预测的table 行。

你说"Adam's details are first in the table",这根本就不是真的; table 中的记录无序存储。如果您 select 没有 order by 或(如您的情况) order by 不是确定性的,则返回的顺序是任意的。