我有兩個數據庫表。兩個表具有相同的結構。現在我想從舊錶中插入數據到新表,如果數據已經存在,它將更新舊數據,否則插入新數據。我想通過匹配一些列字段值來插入或更新數據。任何幫助?從舊錶插入數據到新表
回答
您可以利用MySQL的ON DUPLICATE KEY UPDATE
功能。從MySQL doc -
如果指定了對重複密鑰更新,和行插入該 會引起一個唯一索引或主鍵的重複值時,MySQL 執行舊行的更新。
因此,如果您在表中定義了按鍵,則可以使用此功能。例如,您的發言看起來就像 -
insert into target_table (col1, col2, ...)
select col1, col2,... from source_table
on duplicate key update
col1 = values(col1),
col2 = values(col2),
Bro是「ON DUPLICATE KEY UPDATE」只檢查唯一索引或主鍵?我還匹配一些列值(如id,fname,lname,email等) –
您必須在這些列上創建至少一個UNIQUE索引,這些列使您的記錄唯一 – hashbrown
我的表只有主鍵(id)獨特的索引和表格有一千個數據 –
最好的方法是你可以使用左外連接concept.That會很容易。
INSERT INTO table1
(col_1, col_2, col_3, col_4, col_5) values("","","","")
SELECT
table2_col_1,
table2_col_2,
table2_col_3,
table2_col_4,
1
FROM
table_2 AS t2
LEFT OUTER JOIN
table1 AS t1
ON
t1.col_1 = t2.table2_col_1;
UPDATE table_2
SET table2_col_1 = 'value'// here is the value that you need to implement
WHERE t1.col_1=t2.table2_col_1;//here is your condition
從你的問題,我明白你的table2並不那麼重要。 因此,您可以刪除整個表格2中存在的值,以便結構不會受到影響。完成後,您可以導出插入查詢以實現表格1中存在的值。
兄弟我在舊錶中有大約500個數據,在新表中有數千個(舊的加上一些新的)數據,但是遺漏了舊錶中的一些數據。現在我想添加從舊桌子 –
- 1. 將數據插入到新的和舊的數據表,從另外兩個表
- 2. SQL從舊錶中插入新表
- 3. 插入新的數據到表後清潔舊數據
- 4. 從數據庫插入數據到表
- 5. SP從現有表中插入數據到一個新的表
- 6. 如何從表中插入新數據到另一個表?
- 7. 從數據表插入新的數據到XML
- 8. 插入到數據表數據表自
- 9. 從asp.net插入數據到SQL表格
- 10. 從列表中插入數據到DB
- 11. 從表中插入數據
- 12. 從表格插入數據
- 13. 重新載入數據或從表插入數據?
- 14. 從MYSQL數據庫插入數據表到一個HTML表
- 15. 從數據表插入數據到MySql表
- 16. php插入數據到表
- 17. 插入數據到jquery表
- 18. 插入數據表到PSQL
- 19. 插入數據到MYSQL表
- 20. 插入數據到表
- 21. 插入數據到phpmyadmin表
- 22. MySQL數據插入到表
- 23. bltoolkit插入數據到表
- 24. 插入數據到表
- 25. 創建一個觸發器將舊數據插入到新表中
- 26. 在表中插入新行而不更新舊錶
- 27. 插入數據到SQLite數據庫表
- 28. C#從數據表插入數據到SQL Server數據庫
- 29. 將數據從數據表插入到數據庫的問題#
- 30. SQL創建新表並從另一個表中插入數據
你已經嘗試了什麼?你在用什麼數據庫?你的DB的模式是什麼? – Lee