存储过程在多个SQL数据库上以不同顺序返回输出

时间:2017-11-21 12:41:36

标签: sql sql-server stored-procedures

我有一个存储过程(称为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只有两列。

有人可以帮我弄清楚原因以及如何解决它以获得一致的结果吗?感谢

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