I have a big INSERT/SELECT statement and I capture two fields via OUTPUT like so:
DECLARE @temp TABLE (
spam INT,
eggs INT
);
INSERT INTO dest_table ( foo, bar, baz )
OUTPUT
inserted.foo,
inserted.bar INTO @temp(spam, eggs)
SELECT
foo,
bar,
baz
FROM
source_table
WHERE
eggs IS NULL;
I end up with a big mapping table like this:
spam | eggs
-----+------
1 | 100
2 | 200
3 | 300
4 | 400
Now what I need to do is "backfill" this data into the original source table.
I need something like:
UPDATE
source_table
SET
eggs = ...
WHERE
eggs IN
(
SELECT eggs FROM @temp WHERE spam = source_table.id
)