I have table A
x
ID
---
None
1
3
4
8
I have table B
ID number
---------------
None None
1 300
3 301
4 302
8 303
How do i get values ‘304’, ‘305’….n in B.number column if any new values comes in table A by keeping table B static(i.e keeping the old values in table B unchanged)
Advertisement
Answer
This should work, as you’ve posed the question. But this is a strange thing to need to do, so it might be better to provide less abstract detail on the requirement.
INSERT INTO table_b
SELECT a.id,
( SELECT MAX(number)
FROM table_b
) + ROW_NUMBER() OVER ( PARTITION BY 1 ORDER BY a.id) number
FROM table_a a
WHERE NOT EXISTS
( SELECT 1
FROM table_b b
WHERE a.id = b.id
);