[英]Add values to table1 for each element from table2 and using MAX(id) + 1 from table1 as table2 id
我有table1
和table2
並想要執行以下操作:
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
試試這個查詢,它將正常工作
看起來ID
是table1
的主鍵列。 您當前的插入很可能會多次插入相同的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.