联接仅返回t2中所有行的第一项

时间:2018-10-01 20:28:46

标签: sql-server tsql

我正在使用SQL Server 2016 Express。该查询按预期返回数据:

SELECT TOP (1000) 
    [ResourceID],
    [OrganizationID],
    [CategoryID],
    [SubCategoryID]
FROM 
    [dbo].[Resources]

对于OrganizationID,我得到1,2,3,4,5,6等。

另一方面,此查询:

SELECT TOP (1000) 
    [ResourceID],
    [OrganizationID]
FROM 
    [dbo].[Resources]

返回OrganizationID 1,1,1,1等的全1

从1990年开始从事SQL Server的工作;我从来没有看过这个。请有人解释。

1 个答案:

答案 0 :(得分:3)

在没有通过使用TOP定义显式排序顺序的情况下

ORDER BY是一种随机游戏-您获得一些任意 1000行,而没有真正知道它们是什么“前1000名”(因为SQL Server可以选择以任何方式自由订购-没有系统固有的默认排序,可以通过主键或其他方式进行排序-没有ORDER BY ==没有定义的排序)...

如果同时向两个查询添加ORDER BY ResourceIDORDER BY ResourceID, OrganizationID,该怎么办?您现在是否得到相同的结果?