我有一个存储过程(称为sp1
),它正在两个表之间进行连接。
表的模式如下:
Table1 (id, country, name, ccy)
Table2 (sId, price)
这是存储过程:
SELECT
RTRIM(id) as id,
country
FROM
dbo.Table1
LEFT OUTER JOIN
dbo.Table2 ON Table1.Id = Table2.sId
在一个数据库中,我得到以下结果
MNKD US UnitedStates
928502811 UnitedStates
但是在另一个数据库中,我得到的结果是不同的顺序:
928502811 UnitedStates
MNKD US UnitedStates
唯一显着的区别是表1包含许多列,而表2只有两列。
有人可以帮我弄清楚原因以及如何解决它以获得一致的结果吗?感谢
答案 0 :(得分:4)
默认情况下,SQL表和结果集是无序的。唯一的例外是查询明确具有order by
。如果没有order by
,同一数据库上相同数据的相同查询可以在多次调用时以不同的顺序返回值。
如果您希望按特定顺序排列结果,请添加order by
:
select trim(id) as id, country
from dbo.Table1 left outer join
dbo.Table2
on Table1.Id = Table2.sId
order by id;
答案 1 :(得分:0)
数据库中的行没有订单。
如果您想以某种方式订购结果,则需要使用ORDER BY子句,例如:
SELECT
RTRIM(id) as id,
country
from dbo.Table1
left outer join dbo.Table2 on Table1.Id = Table2.sId
ORDER BY id