我很难理解这里的一个概念。我拥有的是三个结构相同的表。我需要将 table 1
与 table 2
和 INSERT INTO
table 3
结合起来。我的问题:
表 1
和 表 2
具有重复的内容,异常(exception)是它们的 ID
。不过,除了 AI
之外,我没有将 ID
用于任何其他用途,因此这确实不是一个问题。
我希望完成的一个例子是:
original TABLE 1
_________________________________________________________
| ID | Col 2 | Col 3 | Col 4 |
|---------------------------------------------------------|
| 1 | stuff_1 | stuff_2 | stuff_3 |
|---------------------------------------------------------|
| 2 | stuff_x | stuff_y | stuff_z |
|_________________________________________________________|
结合
original TABLE 2
_________________________________________________________
| ID | Col 2 | Col 3 | Col 4 |
|---------------------------------------------------------|
| 3 | stuff_1 | stuff_2 | stuff_3 |
|---------------------------------------------------------|
| 4 | stuff_a | stuff_b | stuff_c |
|_________________________________________________________|
制作
combined TABLE 3 (notice ID's are not counted in duplicate check)
_________________________________________________________
| ID | Col 2 | Col 3 | Col 4 |
|---------------------------------------------------------|
| ? | stuff_1 | stuff_2 | stuff_3 |
|---------------------------------------------------------|
| ? | stuff_x | stuff_y | stuff_z |
|---------------------------------------------------------|
| ? | stuff_a | stuff_b | stuff_c |
|_________________________________________________________|
我尝试过insert into table 3 select * from table 2;
然后从表1中执行insertignore
。我尝试replace into
也是如此,但因为我省略了 ID,所以这些不起作用,因为列计数已关闭。有谁知道如何在处理 ID 问题时将这两个表合并到第三个表中?我要重申的是,ID 是什么并不重要,因为它们永远不会被使用。
最佳答案
您可以使用GROUP BY
消除重复项,同时保留ID
值。
这将为您提供唯一的 Col1
、Col2
和 Col3
值,并将 ID
设置为合并为重复行的最小 ID
值:
INSERT INTO Table3 (ID, Col1, Col2, Col3)
SELECT MIN(ID), Col1, Col2, Col3
FROM (
SELECT ID, Col1, Col2, Col3 FROM Table1
UNION SELECT ID, Col1, Col2, Col3 FROM Table2
) Table1And2
GROUP BY Col1, Col2, Col3
根据您发布的数据,结果应该是这样的:
ID Col1 Col2 Col3
-- ------- ------- -------
1 stuff_1 stuff_2 stuff_3
2 stuff_a stuff_b stuff_c
4 stuff_x stuff_y stuff_z
关于MySQL - 将两个表合并为第三个表,不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676975/