3

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

我有一个导入表的 CSV,我们称它为 T,它是我在 SQL Server 2005 中动态创建的。

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

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

然后如果我找到它,我需要更新同一个表 T,如果没有,我继续前进......直到该 csv 文件中的最后一条记录。任何想法将不胜感激。

4

2 回答 2

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 
于 2012-10-19T20:39:36.587 回答
3

循环是 SQL 中的一个危险信号,通常不需要。SQL 基于集合论。了解 JOIN,您将很少需要迭代。

因此,就您而言,不,循环既不是必需的,也不是一个好主意。

于 2012-10-19T20:38:32.333 回答