我在内部加入了我的查询。我得到了结果,但不知道数据如何在输出。可以告诉我,如何内部连接匹配data.Below我正在展示一张图片。有两张桌子(一张或两张桌子)。在内部加入排序
据我,第一行应该是莫希特但输出different.Please告诉我。
在此先感谢。
我在内部加入了我的查询。我得到了结果,但不知道数据如何在输出。可以告诉我,如何内部连接匹配data.Below我正在展示一张图片。有两张桌子(一张或两张桌子)。在内部加入排序
据我,第一行应该是莫希特但输出different.Please告诉我。
在此先感谢。
你,如果你想要的数据回来一定的方式排序。当你说你期待“Mohit
”成为第一行时,我假设你说因为“Mohit
”是[One]
表中的第一行。但是,当SQL Server加入表时,它不一定按照您的想法加入。
如果您想要返回[One]
的第一行,请尝试按[One].[ID]
排序。或者,您可以order by
任何其他列。
在SQL
中,除非在ORDER BY
子句中指定输出的顺序,否则不会定义输出的顺序。
试试这个:
SELECT *
FROM one
JOIN two
ON one.one_name = two.one_name
ORDER BY
one.id
+1:使用'ORDER BY'子句,顺序不可能是随机的并且可能是可预测的(给出足够的信息),但是该点是“输出未定义”。 – onedaywhen 2010-11-01 15:27:49
感谢您的答复。我知道订单但我想知道内部连接如何在内部工作? – 2010-11-03 08:13:21
为查询构建计划(只需在查询窗口中按下“Ctrl-L”),它会显示算法。 – Quassnoi 2010-11-03 08:57:46
默认情况下,SQL不返回任何顺序,因为这种方式更快。它不必首先浏览您的数据,然后决定要做什么。
您需要添加一个order by子句,并且可能会按您期望的那个ID添加顺序。 (有名字的副本,所以我会假设你想One.ID)
select * From one
inner join two
ON one.one_name = two.one_name
ORDER BY one.ID
在主查询,避免SELECT *
。
避免重复列:JOIN
条件确保One.One_Name
和two.One_Name
将等于因此就不需要到SELECT
子句中同时返回。
避免重复列名:使用'别名'重命名One.ID
和Two.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;
是莫希特smirkingman是正确的。即使你使用Order by子句而没有指定顺序作为asssending或dessending巨大的数据库给你不可预知的肛门
感谢您的答复。我知道订单但我想知道内部连接如何在内部工作? – 2010-11-03 08:12:39
当您执行INNER JOIN时,SQL Server将确定查找匹配行(嵌套循环等)的最佳方法。这会导致结果的随机排序。 – dotariel 2010-11-03 12:49:40
任何人都知道我是否可以强制(特别是SQLite)连接被“排序”? – 2014-07-02 11:18:08