我有一个标记输出(当前输出到临时表),我需要将其合并到另一个表中。应将每组标记插入最终表中每个不同ID的新行。
例:
临时表:
标记
------
ABC
ABB
ACC
等(此临时表中有大约50,000行。
ID表
ID标记
--- ------
1现有标记
1 ABC
1 ABB
1 ACC
1等(适用于所有50k标记)
2现有标记
2 ABC
2 ABB
2 ACC中
2等(适用于所有50k标记)
重复表格中的所有ID。 150-5000之间的任何地方。
答案 0 :(得分:1)
cross join
应该这样做,它会产生临时表中标记集的笛卡尔积和id表中的id集:
insert ID_Table (id, marker)
select distinct i.id, m.marker
from ID_Table i
cross join temp_table m
-- or use the statement below to filter out existing markers
-- cross join (
-- select marker
-- from temp_table
-- where marker not in (
-- select marker from id_table
-- )
-- ) m
这假设临时表中的新标记不在id表中 - 如果它们可能是你想要先过滤现有的那些。
虽然要注意将50,000行与150-5000行组合会产生大量行(7.5到2.5亿之间)并且可能需要很长时间;但也许这就是你想要的?