我是新手使用存储过程,使用存储过程更新和插入的最佳方法是什么。我有两个表,我可以通过一个不同的ID匹配它们,如果我的加载表和目标表中都存在ID,我想更新,如果目标表中不存在该项,我想插入。只是一个示例模板非常有用,谢谢!
答案 0 :(得分:0)
您应该查找SQL MERGE语句。
它允许你执行UPSERT - 即如果键值尚不存在则INSERT,如果键存在则更新。
http://technet.microsoft.com/en-us/library/bb510625.aspx
但是,在执行更新之前,您需要在2个位置检查键值确实会使其更复杂。我没试过这个,但我认为可以使用VIEW或CTE来确定你的桌子和桌子上是否存在ID。然后将MERGE基于CTE / VIEW。
但一定要先看看MERGE!
答案 1 :(得分:0)
如果我理解得很好,你想在一个表中选择值并将它们插入到其他表中。如果第二个表中存在id,则需要更新该行。如果我没错,你需要这样的东西:
mysql> select * from table_1;
+----+-----------+-----------+
| id | name | last_name |
+----+-----------+-----------+
| 1 | fagace | acero |
| 2 | ratangelo | saleh |
| 3 | hectorino | josefino |
+----+-----------+-----------+
3 rows in set (0.00 sec)
mysql> select * from table_2;
+----+-----------+-----------+
| id | name | last_name |
+----+-----------+-----------+
| 1 | fagace | acero |
| 2 | ratangelo | saleh |
+----+-----------+-----------+
2 rows in set (0.00 sec)
mysql> insert into table_2 select t1.id,t1.name,t1.last_name from table_1 t1 on duplicate key update name=t1.name, last_name=t1.last_name;
Query OK, 1 row affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from table_2;
+----+-----------+-----------+
| id | name | last_name |
+----+-----------+-----------+
| 1 | fagace | acero |
| 2 | ratangelo | saleh |
| 3 | hectorino | josefino |
+----+-----------+-----------+
3 rows in set (0.00 sec)
mysql>