Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储过程在多个SQL数据库上以不同的顺序返回输出_Sql_Sql Server_Stored Procedures - Fatal编程技术网

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

存储过程在多个SQL数据库上以不同的顺序返回输出,sql,sql-server,stored-procedures,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 Unit

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


有人能帮我找出原因,以及如何解决它以获得一致的结果吗?谢谢,默认情况下SQL表和结果集是无序的。唯一的例外是当查询显式地具有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;

数据库中的行没有顺序

如果要以某种方式对结果排序,则需要使用order BY子句,例如:

SELECT
RTRIM(id) as id,
country
from dbo.Table1 
left outer join dbo.Table2 on Table1.Id = Table2.sId
ORDER BY id

如果没有ORDERBY,所有的赌注都是无效的……这就是为什么当我在存储过程中使用“where子句”时,它被称为“ORDERBY”,它总是以相同的顺序给出。那么它是好的还是只有按订单保证正确的顺序?Thanks@mohituprim:只有使用显式的orderby才能保证任何顺序-其他任何事情都只是幸运的巧合