2011-11-08 15 views
3

我有記錄ID的列表,我想在SQL Server中從表中檢索單個值2008SQL:結果順序是否映射到'IN'表達式中的值?

我的查詢是:

SELECT TestResult.FailureDetails FROM TestResult WHERE TestResult.ID IN (1,2,3,...) 

的「IN」表達包含數百個ID的。 ID列是表的主鍵。

如果我的表像:

ID Value 
1  A 
2  B 
3  C 

將我總是得到的結果由「IN」表達出現的順序排列?如果沒有,我正在考慮這樣做的:

SELECT TestResult.ID, TestResult.FailureDetails FROM TestResult WHERE TestResult.ID IN (1,2,3,...) 
+0

你總是希望在'ID'的順序,按您的例子或你需要支持任意的命令嗎? –

+0

ID的順序應該沒問題。根據下面的答案,我現在也選擇TestResult.ID。 – siger

回答

1

不,你不會總是得到結果,以便根據該IN

要明確,並添加一個ORDER BY子句。

SELECT FailureDetails 
FROM TestResult 
WHERE ID IN (1,2,3,...) 
ORDER BY ID; 
0

如果他們是由IN條款訂購,我會感到驚訝。因爲你沒有ORDER BY你可能會得到PK順序的結果,但我不會依賴於這一點。

如果順序很重要,你應該明確地設置:

SELECT TestResult.ID, TestResult.FailureDetails FROM TestResult WHERE TestResult.ID IN (1,2,3,...) 
ORDER BY TestResult.ID