在t-sql中有循环吗?用它们是个好主意?

时间:2012-10-19 20:33:18

标签: sql sql-server database tsql

请原谅我,如果我这样问,但我不是SQL Server,也不是SQL开发人员。

我有一个CSV,我导入到一个表中,让我们称它为我在SQL Server 2005中即时创建的。

我想要做的是根据导入到我创建的表T中的数据对其他表运行一些查询。 例如:

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

然后,如果我找到它,我需要更新相同的表T,如果不是我移动...直到该csv文件中的最后一条记录。任何想法都将不胜感激。

2 个答案:

答案 0 :(得分:5)

对于你想要的东西,没有必要的循环,似乎你只需要IN

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

如果TableX上存在某个标记需要更新TableT,则应该是:

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 

答案 1 :(得分:3)

循环是SQL中的一个红色标志,通常不需要。 SQL基于set theory。理解JOIN,你很少需要迭代。

所以,在你的情况下,不,循环既不是必要的也不是一个好主意。