请原谅我,如果我这样问,但我不是SQL Server,也不是SQL开发人员。
我有一个CSV,我导入到一个表中,让我们称它为我在SQL Server 2005中即时创建的。
我想要做的是根据导入到我创建的表T中的数据对其他表运行一些查询。 例如:
select *
from TableX
where customerID = [this should contain the customerID from the table T]
然后,如果我找到它,我需要更新相同的表T,如果不是我移动...直到该csv文件中的最后一条记录。任何想法都将不胜感激。
答案 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,你很少需要迭代。
所以,在你的情况下,不,循环既不是必要的也不是一个好主意。