在WHERE子句中使用IN语句时保持排序顺序

时间:2011-05-23 09:19:43

标签: sql sql-server-2005 where-in

我正在使用SQL Server 2005。

我有一个临时排序表(Table_A),其中包含2列(IDRowNumber)。
现在,我通过从临时表(Table_B)中选择其他表(ID)中的所有行来创建新表。

Table_A

上述查询的结果未按SELECT * FROM Table_B WHERE Table_B.ID IN (SELECT ID FROM Table_A) 排序排序 我正在寻找一种方法来保持新结果表的结果按Table_A排序排序。

...的Tx

2 个答案:

答案 0 :(得分:3)

您需要使用JOIN代替。我假设Table_AID只能有1行。如果不是这种情况,那么重写为JOIN将引入重复的行,我们将需要更多详细信息,在这种情况下RowNumber用于排序目的。

SELECT Table_B.* 
FROM Table_B JOIN Table_A ON  Table_B.ID = Table_A.ID
ORDER BY Table_A.RowNumber

答案 1 :(得分:0)

从表_B中选择b。*    在a.id = b.id上加入Table_A a    按a.RowNumber排序