簡體   English   中英

將table2中每個元素的值添加到table1中,並將table1中的MAX(id)+1用作table2 id

[英]Add values to table1 for each element from table2 and using MAX(id) + 1 from table1 as table2 id

我有table1table2並想要執行以下操作:

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:

有什么幫助嗎?

table1

| ID | OWNER_ID | NAME |
| --- | ---- | --- |

ŧable2

| ID | OWNER_ID_REF | NAME |
| --- | ---- | --- |

謝謝

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

試試這個查詢,它將正常工作

看起來IDtable1的主鍵列。 您當前的插入很可能會多次插入相同的ID值,因為max子查詢對於table2每個記錄將具有相同的值。 假設ID是自動遞增的,那么您可能始終不應該為其分配值。 這是一個選擇:

INSERT INTO table1 (OWNER_ID, NAME)
SELECT ID, 'value'
FROM table2;

您正在使用SELECT(SELECT MAX(ID)FROM table1)+ 1,ID,'value'FROM table2

插入時,通過select Max(ID)+1給出表2的所有記錄的樣本值

使用這樣的東西...

創建表#tt(id int主鍵,名稱varchar(200))

聲明@vaue int =(從#tt選擇max(id))

插入#tt中,選擇row_number()over(按ID排序)+ @vaue,從#tt中選擇名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM