当我用查询选择所有行时:
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
返回:
ID Name Area Phone Status Tries
-----------------------------------------------------
117971 Brian Two 2222222222 New 0
为什么它不会返回Adam的详细信息,因为它们是表中的第一个?
答案 0 :(得分:11)
在关系数据库中,表没有固有的顺序。您提供的ORDER BY
与所有记录并不明显,事实上它对所有记录都是相同的。因此,返回结果的顺序仍然不确定且不可预测。因此top 1
返回一个不可预测的行。
你说“亚当的细节是表中的第一个”,这根本不是真的;表中的记录存储没有任何顺序。如果您选择没有order by
或(如您的情况),order by
不确定,则返回的顺序是任意的。