2012-10-19 53 views
3

對不起,如果我問這個,但我不是SQL Server或SQL開發人員。t-sql中有循環嗎?正在使用他們一個好主意?

我有一個CSV,我導入到一個表,讓我們把它叫做牛逼,我在SQL Server動態創建2005

我想要做的是在其上運行的其它表的一些查詢基礎上,將數據導入到創建的表T i中。 例如:

select * 
from TableX 
where customerID = [this should contain the customerID from the table T] 

,然後,如果我找到它,我需要更新同桌T,如果不是我待着......直到在CSV文件中的最後一個記錄。任何想法將不勝感激。

+0

http://msdn.microsoft.com/en-us/library/ms178642.aspx – mawburn

+2

您是否考慮過使用連接? –

+0

我不知道如何,我很少使用SQL ...將考慮有一天學習... :) – user1327073

回答

5

沒有找到你想要的東西循環necesary,似乎你只需要IN

SELECT * 
FROM TableX 
WHERE CustomerID IN (SELECT CustomerID FROM TableT) 

如果您需要,如果存在於TableT一些標誌更新TableX,它應該是:

UPDATE TableX 
SET Mark = 1 
WHERE CustomerID IN (SELECT CustomerID FROM TableT) 

如果您需要更新TableX,其值爲TableT,應該是這樣的:

UPDATE X 
SET X.Column = T.Column 
FROM TableX X 
INNER JOIN TableT T 
ON X.CustomerID = T.CustomerID 
+0

太棒了!謝謝。 – user1327073

3

循環是SQL中的紅旗,通常不需要。 SQL基於set theory。瞭解JOIN,你很少需要迭代。

因此,在你的情況下,不,循環既不必要也不是一個好主意。

+0

謝謝,我怎樣才能加入這兩張表並同時更新? – user1327073

+0

@ user1327073'SELECT * FROM TableX AS tX JOIN T ON T.customerID = tX.customerID'這將僅返回兩個表中customerID相同的結果。 (顯然,將'T.customerID'更改爲您要搜索的列名稱) – mawburn

+0

來自兩者的客戶情況如何?像一個工會不是一個十字路口? – user1327073

相關問題