2011-05-23 120 views
2

我使用的是SQL Server 2005中在WHERE子句

使用IN语句时,在排序顺序保持我有一个临时排序表(Table_A),其中包含2列(IDRowNumber)。
现在,我通过从临时表(Table_A)中选择存在(ID值)的其他表(Table_B)中的所有行来创建新表。

SELECT * 
FROM Table_B 
WHERE Table_B.ID IN (SELECT ID FROM Table_A) 

以上查询的结果未按排序Table_A排序。
我正在寻找一种方法来保持按Table_A排序的新结果表的结果。

的Tx ....

+1

表不排序 - 只有结果集(和游标)。 – 2011-05-23 09:40:57

回答

3

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

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

谢谢马丁... 这是正确的,并解决我的问题! – 2011-05-23 09:28:05

0

选择的b *从表-B b 加入表-A一个上a.id = b.id 为了通过a.RowNumber