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

moh*_*rim 0 sql sql-server stored-procedures

我有一个存储过程(称为sp1),它正在两个表之间进行联接。

表的架构如下:

Table1 (id, country, name, ccy)
Table2 (sId, price)
Run Code Online (Sandbox Code Playgroud)

这是存储过程:

SELECT
    RTRIM(id) as id,
    country
FROM
    dbo.Table1 
LEFT OUTER JOIN
    dbo.Table2 ON Table1.Id = Table2.sId
Run Code Online (Sandbox Code Playgroud)

在一个数据库上,我得到以下结果

MNKD US     UnitedStates
928502811   UnitedStates
Run Code Online (Sandbox Code Playgroud)

但在另一个数据库上,我得到了不同顺序的结果:

928502811   UnitedStates
MNKD US     UnitedStates
Run Code Online (Sandbox Code Playgroud)

唯一显着的区别是表 1 由许多列组成,而表 2 只有两列。

有人可以帮助我找出原因以及如何修复它以获得一致的结果吗?谢谢

Gor*_*off 5

默认情况下,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;
Run Code Online (Sandbox Code Playgroud)

  • @mohituprim:***ONLY*** 使用显式的“ORDER BY”保证任何顺序 - 其他任何事情都只是一个幸运的巧合 (2认同)