在创建scd2表时,我尝试标识瞬态表的值,以便在记录级标识包含相同id_A和id_B的记录。也就是说,我不想让它混在一起。使用此WHERE IN
逻辑,计算机是否逐行查看这些条件?
UPDATE test_table AS a
SET a.current_record = FALSE
WHERE a.id_A IN (
SELECT id_A
FROM Transient_Table
)
AND a.id_B IN (
SELECT a.id_B PHONE_NUMBER_TYPE
FROM Transient_Table
);
发布于 2020-01-07 17:46:55
请尝试以下操作:
update a
set a.current_record = FALSE -- Not sure your RDBMS honors FALSE , in SQL Server it does not. So, update this accordingly.
from test_table as a
join Transient_Table as t on a.id_A = t.id_A and a.id_B = t.id_B
发布于 2020-01-07 20:15:54
SQL所做的几乎所有事情都是逐行进行的。因此,它转到第一行,并确保满足条件1,然后满足条件2。如果两个都满足,则SQL将包含该行。
我相信这是Snowflake的正确语法。不确定是否可以添加别名:
update test_table
set current_record = false
from Transient_Table
where test_table.id_A = transient_table.id_A and test_table.id_B = transient_table.id_B;
https://stackoverflow.com/questions/59633401
复制相似问题