为什么 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
不是确定性的,则返回的顺序是任意的。
当我 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
不是确定性的,则返回的顺序是任意的。