我将内部联接放入我的查询中。我得到了结果,但不知道数据是如何输出的。任何人都可以告诉我内部联接如何匹配数据。我正在显示图像。有两张桌子(一张或两张桌子)。
据我说,第一行应该是Mohit,但输出是不同的。请告诉我。
提前致谢。
答案 0 :(得分:11)
在SQL
中,除非您在ORDER BY
子句中指定输出,否则不会定义输出的顺序。
试试这个:
SELECT *
FROM one
JOIN two
ON one.one_name = two.one_name
ORDER BY
one.id
答案 1 :(得分:5)
如果您希望数据以某种方式返回,则必须对其进行排序。当你说你期望“Mohit
”成为第一行时,我假设你这么说,因为“Mohit
”是[One]
表中的第一行。但是,当SQL Server连接表时,它不一定按您认为的顺序加入。
如果您希望返回[One]
的第一行,请尝试按[One].[ID]
排序。或者,您可以order by
任何其他列。
答案 2 :(得分:5)
在主查询中避免使用SELECT *
。
避免重复列:JOIN
条件确保One.One_Name
和two.One_Name
相等,因此您无需在SELECT
子句中返回两者。
避免使用重复的列名称:使用“别名”重命名One.ID
和Two.ID
。
使用ORDER BY
子句中的列名('alises',如果适用)添加SELECT
子句。
建议重写:
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;
答案 3 :(得分:3)
在第一次查询结束时添加ORDER BY ONE.ID ASC
。
默认情况下没有订购。
答案 4 :(得分:1)
默认情况下,SQL不会返回任何排序,因为这种方式更快。它不必首先查看您的数据,然后决定该怎么做。
您需要添加order by子句,并且可能按照您期望的ID排序。 (有一个名字的副本,因此我假设你想要One.ID)
select * From one
inner join two
ON one.one_name = two.one_name
ORDER BY one.ID
答案 5 :(得分:0)
我发现加入时是一个问题,但是您可能会发现此博客对于了解后面的Joins的工作方式很有用。 How Joins Work..
[已编辑] @Shree谢谢您指出这一点。 关于合并联接的段落。它提到了连接的工作方式...
像 哈希联接,合并联接包括两个步骤。首先,两个表 join在join属性上排序。只需两个即可完成 通过外部合并排序通过每个表。最后, 当从下一个有序元素中拉出时生成结果元组 比较每个表和联接属性
。