从表值INSERT INTO SELECT有时候遵守命令而有时不遵守命令?

时间:2014-01-06 08:15:11

标签: sql sql-server sql-server-2012

我有一个简单的存储过程,其中包含一个插入select语句。问题是SQL Server有时会尊重TVP的顺序,有时则不会。我的意思是,如果TVP包括

  

row2 =(1,'a'),(2,'b')。

SQL Server随时插入该记录

(1,'a'),
(2,'b')

有时候

(2,'b'), 
(1,'a')

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

如果您没有在select语句中定义Order BY,请查看this,如前所述,并不保证它会按特定顺序排列。因此,如果需要,请始终指定排序顺序。

表值参数几乎没有优势,其中之一就是

  

启用客户端以指定排序顺序和唯一键。

请查看上面提到的一个和其他here

答案 1 :(得分:0)

如果您需要任何特定订单,则可以在order by查询中始终使用select