请教合拼两张表的方法(两张表有重复的自增长 id)

2019-12-03 16:24:39 +08:00
 qazwsxkevin

有两张表 aa 和 bb,结构(字段)是一致的
要把 bb 表添加到 aa 表的末端
以前没 id 重复的时候,我是这么做的:
INSERT INTO aa SELECT * FROM bb ORDER BY UpdateTime;
加完后再
ALTER TABLE aa DROP id;
ALTER TABLE aa ADD id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT FIRST;

重新梳理一遍自增长 id
现在两张表有自增长 id 重复,怎么样愉快便捷地合并两张表呢?(如果加入数据后,能把 aa 表的 ID 也同时再梳理一遍就更好了)

4921 次点击
所在节点    MySQL
13 条回复
QQQQQQQ
2019-12-03 16:31:10 +08:00
NOT EXISTS 去 insert 不就行了吗
qazwsxkevin
2019-12-03 17:54:29 +08:00
@QQQQQQQ 不知道是我理解的不对问题,还是您了。。。
不是 NOT EXISTS 的问题?
重复的值是主键,想寻求方法,便捷地将 bb 的主键去掉,或者重新调整一个范围。。。
去到 aa 表里,所有主键 id 也是需要重新梳理一次的,所以添加数据前,bb 表的 id 随便调节一个范围也没问题,或者说有啥办法连调节都不需要了,直接就添加过去 aa 表了。。。
还是您意思是,两表主键重复也可以 NOT EXISTS 强势 insert?
bsg1992
2019-12-03 17:58:09 +08:00
既然都合并了为什么不直接如插入呢 和主键没关系吧
linzhzh
2019-12-03 19:52:40 +08:00
要么新建一张表 用哈希做主键,
要么 ab 表的自增起始不同 ,比如 A 从 10000000 起,B 表从 50000000 起
b 直接就插入 a 了不会重复。
Jemini
2019-12-03 20:38:35 +08:00
创建第三张表,insert aa 在 insert bb、不要 select id 可以吗
insert 完再 rename
wuwukai007
2019-12-03 21:28:57 +08:00
用代码读 b,手动改主键列,在手动插入吧。
具体到 py,pandas.read_sql
在 to_sql
realpg
2019-12-03 22:05:40 +08:00
insert into tbl_a select null,a1,a2,a3,a4,a5,a6,a7 from tbl_b
QQQQQQQ
2019-12-04 08:59:16 +08:00
@qazwsxkevin 嗯,主观以为是想去重了。。。是想按照 ID 排序全部插进去?
ffkjjj
2019-12-04 09:10:36 +08:00
insert into aa( col1, col2, col3) select (col1, col2, col3) from bb;
不要带上 id 就好了
Raymon111111
2019-12-04 10:07:27 +08:00
直接 insert
yolee
2019-12-04 14:09:45 +08:00
若有表 aa(col0, col1, col2, col3),bb(col0, col1, col2, col3),建第三张表 cc(col0, col1, col2, col3),id 都为 col0,并自增,然后:
INSERT INTO cc(col1, col2, col3) SELECT (col1, col2, col3) FROM aa; # 选择表 aa 中除了 id 的列插入到表 cc
INSERT INTO cc(col1, col2, col3) SELECT (col1, col2, col3) FROM bb; # 选择表 bb 中除了 id 的列插入到表 cc
wangyzj
2019-12-04 14:53:08 +08:00
@ffkjjj +1
qsbaq
2019-12-04 15:02:49 +08:00
不带 ID 插入即可。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/625557

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX