我在不同數據庫中有兩個類似的表,我想從另一個數據庫中插入一個。同時,我希望確保每次mySql遇到「重複id」錯誤時,都會將該行插入新表的底部,並指定一個新的唯一標識。我曾嘗試過:INSERT...SELECT...ON DUPLICATE KEY UPDATE
但我找不到一種方法來讓它插入到一個新行,如果它找到'重複鍵'而不是更新前一行。在不更新舊行的情況下插入唯一行
0
A
回答
2
如果你可以指定新id
到每一條記錄被複制到目標表,無論在源表中的id
是否在目的地以前存在與否,你根本無法提供id
,讓MySQL來訴諸要分配默認NULL
值導致auto_increment
值:
INSERT INTO destdb.tbl (colA, colB, colC)
SELECT colA, colB, colC
FROM srcdb.tbl
否則,你將需要使用像NULLIF()
明確設置id
到NULL
它已經存在,基於連接表一起:
INSERT INTO destdb.tbl (id, colA, colB, colC)
SELECT NULLIF(src.id, dst.id), src.colA, src.colB, src.colC
FROM srcdb.tbl src LEFT JOIN destdb.tbl dst USING (id)
1
據當時http://dev.mysql.com/doc/refman/5.1/de/insert-select.html的文檔,這可能與查詢來實現:
INSERT INTO `table2` SELECT (NULL, col1, col2, col3) FROM `table1`
這種方式,自動增量值是留給「NULL」,導致發動機給它是一個新的AI值,而不是試圖強制現有的AI值。
請不要讓我的語法,我沒有測試過這個。
0
If the id is autoincrement:
Create an additional column in the second table with a reference to the id value in the first table
Sample Select Query:
SELECT unique_id, data FROM table_1 WHERE id='$id'
Sample Insert Query:
INSERT INTO table_2 (table_1_unique_id, data) VALUES ($unique_id_from_first_table, $data)
This will solve any duplicate id problems and allow referencing between the two tables
相關問題
- 1. 插入新行,更新舊行:如何?
- 2. 在不更改行的情況下進行輸入
- 3. 如何在不插入的情況下更新Django模型?
- 4. 只有在不存在H2插入行的情況下
- 5. 如何僅在不存在的情況下插入行?
- 6. 在不存在記錄的情況下用SQL插入多行
- 7. 可能在不插入新行的情況下獲得用戶輸入?
- 8. 在不修改舊數據的情況下更新數據
- 9. 在不擦除舊模型的情況下更新Backbone.js集合
- 10. 在不覆蓋第一行的情況下寫入.csv文件中的新行
- 11. 在不覆蓋數據的情況下插入行
- 12. 在表中插入新行而不更新舊錶
- 13. 更新立即插入行而不更新舊版
- 14. 如何在不使用更新的情況下進行轉換
- 15. 在不換行的情況下獲取持續狀態更新
- 16. MySQL只有在行不存在的情況下執行插入操作
- 17. 在條件允許的情況下插入或更新
- 18. 在Oracle中不使用唯一密鑰的情況下防止重複插入
- 19. 情況下,更新
- 20. 如何在不使用主鍵的情況下更新Yii中的一行?
- 21. 在沒有循環的情況下在MySQL中更新多行
- 22. 如何在不更新舊記錄的情況下使用Hibernate session.save()插入/保存對象
- 23. 如何在不影響每一行的情況下進行foreach?
- 24. 在SQLite中插入唯一的行(python)
- 25. 如何在沒有datarowview的情況下更新gridview行?
- 26. 如何在這種情況下更新我的行?
- 27. 在任何情況下如何將文本插入空行?
- 28. 在不丟失舊代碼的情況下更改c#程序
- 29. Oracle:在不更改數據的情況下運行更新觸發器
- 30. 如何在不覆蓋舊值的情況下更新字典中的密鑰
'鍵'是自動增量值嗎?如果是這樣,我可能會爲你解決。嘗試'INSERT INTO table2'SELECT NULL,col1,col2,col3 FROM table1'我手邊沒有準確的語法,但它應該以這種方式工作。 – ATaylor 2012-07-23 13:36:35
是'鑰匙'是一個自動增量字段。謝謝,我會試試這個。 – IROEGBU 2012-07-23 13:40:07
不客氣。這聽起來很高興,如果你得到它的工作:) – ATaylor 2012-07-23 13:42:50