【发布时间】:2012-04-17 11:33:32
【问题描述】:
我想使用单个 SQL 语句
insert into T (...) select ... from T where ...
复制大量数据集。我的问题是从表 T 到其他表有 N:M 关系,这些也必须复制。如果我不知道哪个原始数据集属于哪个复制数据集,我该怎么做?让我举例说明。
之前的数据库内容:
表T:
ID | COL1 | COL2
-----------------
1 | A | B
2 | C | D
N:M-table 从表 T 引用表 U(表 U 未显示):
T | U
---------
1 | 100
1 | 101
2 | 100
2 | 102
我的复制操作,其中 [???] 是我不知道的部分:
insert into T (COL1, COL2) select COL1, COL2 from T
insert into NM (T, U) select [???]
之后的数据库内容:
表T:
ID | COL1 | COL2
-----------------
1 | A | B
2 | C | D
3 | A | B
4 | C | D
N:M 表:
T | U
---------
1 | 100
1 | 101
2 | 100
2 | 102
3 | 100
3 | 101
4 | 100
4 | 102
注意:
- 我有数千个数据集(不仅仅是两个)
- 我想使用“插入...选择”来获得更好的性能
【问题讨论】:
-
我不明白这个问题,尤其是最后一句话。只需制作您想要的任何
select- 根据需要连接多个表,这将生成一个结果表,并将插入该表。就是这样! -
@Tomas,对不起,我误解了这个问题:(
-
@Tomas:我想从一个表复制到同一个表中。
-
这应该不是问题——我有一个similar question,应该不是问题。所以准备你的
select子查询,就像你通常做的那样,然后试着把它放在插入语句下,不要担心。 -
我添加了一个小例子,在您的“非常相似的问题”中您进行了更新。我想做一个插入,但不知道插入的 id。
标签: mysql sql postgresql insert many-to-many