假设有两个表,表1和表2。 每个表都有两列,ColumnA和ColumnB。 我想用table2.ColumnB更新table1.ColumnA table1.ColumnB和table2.ColumnB是相同的。 但是,table2中可能有多行,其中table1.ColumnB和table2.ColumnB是相同的。如果是这种情况,我不想更新列。我想更新列只有1个情况,其中table1.ColumnB和table2.ColumnB是相同的
代码适用于SQL SERVER。我尝试了以下但有语法错误,我无法理解。
SET [ColumnA] =
(
IF ((SELECT COUNT(*) FROM Table2 WHERE ColumnB = Table1.ColumnB) = 1)
BEGIN
SELECT [ColumnA]
FROM Table2
WHERE Table1.ColumnB = ColumnB
END
)
WHERE [ColumnA] IS NULL;
答案 0 :(得分:0)
我认为你可以设置2个不同的变量 (SET ColumnA = select count(*)blabla..as you does;然后对ColumnB执行相同操作) 然后你可以比较这两个值(IF ColumnA == ColumnB)
答案 1 :(得分:0)
UPDATE
Table1
SET
ColumnA = Table2.ColumnA
FROM
(
SELECT MAX(ColumnA) AS ColumnA, ColumnB
FROM Table2
GROUP BY ColumnB
HAVING COUNT(*) = 1
)
AS Table2
WHERE
Table1.ColumnB = Table2.ColumnB
AND Table1.ColumnA IS NULL