SQL Server 内部联接中的排序依据

jhdbpxl9  于 2022-12-26  发布在  其他
关注(0)|答案(6)|浏览(151)

我把内部连接在我的查询。我已经得到了结果,但不知道数据是如何进入输出。谁能告诉我,如何内部连接匹配的数据。下面我显示了一个图像。有两个表(一个或两个表)。

据我说,第一行应该是Mohit,但输出不同。请告诉我。

jobtbby3

jobtbby31#

SQL中,除非在ORDER BY子句中指定,否则不定义输出顺序。
试试这个:

SELECT  *
FROM    one
JOIN    two
ON      one.one_name = two.one_name
ORDER BY
        one.id
jxct1oxe

jxct1oxe2#

如果您希望数据以某种方式返回,则必须对其进行排序。当您说希望“Mohit“是第一行时,我假设您是这样说的,因为“Mohit“是[One]表中的第一行。但是,当SQL Server连接表时,它不一定按照您所想的顺序连接。
如果要返回[One]中的第一行,请尝试按[One].[ID]排序。或者,可以按order by排序任何其他列。

insrf1ej

insrf1ej3#

在主查询中避免使用SELECT *
避免重复列:JOIN条件确保One.One_Nametwo.One_Name相等,因此不需要在SELECT子句中返回两者。
避免重复列名:使用“别名”重命名One.IDTwo.ID
使用SELECT子句中的列名(适用时为“alises”)添加ORDER BY子句。
建议重写:

SELECT T1.ID AS One_ID, T1.One_Name, 
       T2.ID AS Two_ID, T2.Two_name
  FROM One AS T1
       INNER JOIN two AS T2
          ON T1.One_Name = T2.One_Name
 ORDER 
    BY One_ID;
u0sqgete

u0sqgete4#

在第一个查询的末尾添加ORDER BY ONE.ID ASC
默认情况下没有排序。

rpppsulh

rpppsulh5#

默认情况下,SQL不返回任何排序,因为这种方式速度更快。它不必先检查数据,然后再决定要做什么。
您需要添加一个orderby子句,并且可能是您期望的任何ID的orderby。(这里有一个重复的名称,因此我假设您想要One.ID)

select * From one
inner join two
ON one.one_name = two.one_name
ORDER BY one.ID
qxsslcnc

qxsslcnc6#

我发现这是一个问题,当加入,但你可能会发现这个博客有用的了解如何加入工作在后面. How Joins Work..
[编辑] @Shree谢谢你指出这一点。在合并连接的段落上。它提到了连接是如何工作的...
与散列联接一样,合并联接也包含两个步骤。首先,联接的两个表都按联接属性排序。通过外部合并排序,只需两次遍历每个表即可完成此操作。最后,从每个表中提取下一个排序元素并比较联接属性时,将生成结果元组

相关问题