SQL Server:使用IN子句时返回的行的顺序

时间:2013-10-31 10:34:12

标签: sql-server select in-clause

运行以下查询将返回4行。正如我在SSMS中看到的,返回行的顺序与我在IN子句中指定的相同。

SELECT * FROM Table WHERE ID IN (4,3,2,1)

我可以说返回行的顺序总是与它们在IN子句中出现的顺序相同吗?

如果是,那么这是真的,以下两个查询以相同的顺序返回行吗? (因为我测试的订单是相同的,但我不知道我是否可以相信这种行为)

SELECT TOP 10 * FROM Table ORDER BY LastModification DESC

SELECT * FROM Table WHERE ID IN (SELECT TOP 10 ID FROM Table ORDER BY LastModification DESC)

我问这个问题,因为我有一个非常复杂的选择查询。使用这个技巧,它带来了我。在我的情况下,性能提升30%。

1 个答案:

答案 0 :(得分:1)

除非使用ORDER BY子句,否则不能保证记录具有任何特定顺序。您可能会使用某些可能在某些时候起作用的技巧,但它们不会保证您的订单。