在内部加入订购

Moh*_*ar 18 sql sql-server inner-join

我把内部联接放在我的查询中.我得到了结果,但不知道数据是如何输出的.任何人都告诉我内部联接如何匹配数据.我正在显示图像.有两张桌子(一张或两张桌子).

替代文字

据我说第一排它应该是Mohit,但输出是不同的.请告诉我.

提前致谢.

Qua*_*noi 11

SQL,除非在ORDER BY子句中指定输出,否则不会定义输出的顺序.

试试这个:

SELECT  *
FROM    one
JOIN    two
ON      one.one_name = two.one_name
ORDER BY
        one.id
Run Code Online (Sandbox Code Playgroud)


one*_*hen 6

避免SELECT *在主查询中.

避免重复列:JOIN条件确保One.One_Name并且two.One_Name将相等,因此您不需要在SELECT子句中返回两者.

避免重复的列名:重命名One.IDTwo.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;
Run Code Online (Sandbox Code Playgroud)


dot*_*iel 5

如果希望数据以某种方式返回,则必须对其进行排序。当您说希望“ Mohit”成为第一行时,我假设您说的是因为“ Mohit”是[One]表中的第一行。但是,当SQL Server联接表时,它不一定按照您认为的顺序联接。

如果要从[One]中返回第一行,请尝试按排序[One].[ID]。或者,您可以选择order by其他任何列。

  • 当您执行 INNER JOIN 时,SQL Server 会确定查找匹配行的最佳方式(嵌套循环等)。这会导致结果随机排序。 (2认同)
  • 有人知道我是否可以强制(特别是对于SQLite)将连接“排序”吗? (2认同)