Mysql 将表2中每个元素的值添加到表1中,并使用表1中的MAX(id)+1作为表2 id

Mysql 将表2中每个元素的值添加到表1中,并使用表1中的MAX(id)+1作为表2 id,mysql,max,Mysql,Max,我有表1和表2,我想做如下事情: INSERT INTO table1 (ID, OWNER_ID, NAME) SELECT (SELECT MAX(ID) FROM table1) + 1, ID, 'value' FROM table2 上述查询不起作用,返回: Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.table1(ID)"; SQL statement: 需要帮忙吗 表1: ŧ2: 谢谢看起来ID是表

我有表1和表2,我想做如下事情:

INSERT INTO table1 (ID, OWNER_ID, NAME) SELECT (SELECT MAX(ID) FROM table1) + 1, ID, 'value' FROM table2
上述查询不起作用,返回:

Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.table1(ID)"; SQL statement:
需要帮忙吗

表1:

ŧ2:

谢谢

看起来ID是表1中的主键列。您当前的insert很可能会多次插入相同的ID值,因为max子查询对于表2中的每条记录都具有相同的值。假设ID是自动递增的,您可能无论如何都不应该给它赋值。这里有一个选择:

INSERT INTO table1 (OWNER_ID, NAME)
SELECT ID, 'value'
FROM table2;
您正在使用 从表1+1中选择MAXID,从表2中选择ID“值”

通过“选择”插入时 MaxID+1 为表2的所有记录提供样本值

用这样的东西

创建表tt id int主键,名称varchar200

声明@vaue int=从tt中选择maxid

插入tt 选择按id+@vaue超额订购的行号 ,来自tt的名称

set @i:=(SELECT MAX(ID) FROM table1);
INSERT INTO table1 (ID, OWNER_ID, NAME) SELECT @i:=@i+1, ID, 'value' FROM table2

尝试此查询它将正常工作

请共享您的show create table语句结果。谢谢,但它提供NULL不允许第二次询问列ID,请包含您的create table语句。显示创建表table1等。我怀疑这里的表设计不好。@Briston12请更改您的表,将id字段设置为自动递增
INSERT INTO table1 (OWNER_ID, NAME)
SELECT ID, 'value'
FROM table2;
set @i:=(SELECT MAX(ID) FROM table1);
INSERT INTO table1 (ID, OWNER_ID, NAME) SELECT @i:=@i+1, ID, 'value' FROM table2