Sql 存储过程-更新和插入
我不熟悉使用存储过程,使用存储过程更新和插入的最佳方法是什么。我有两个表,我可以通过一个不同的ID来匹配它们,我想更新我的加载表和目标表中是否都存在该ID,如果目标表中不存在该项,我想插入。只是一个示例模板将非常有用,谢谢 您应该查找SQL MERGE语句 它允许您执行UPSERT,即,如果键值不存在,则插入,如果键值存在,则更新 但是,在执行更新之前,需要在两个位置检查键值,这会使更新更加复杂。我没有尝试过这个方法,但我认为可以使用视图或CTE来确定ID是否存在于两个表中,然后根据CTE/视图进行合并Sql 存储过程-更新和插入,sql,sql-server,sql-server-2008,stored-procedures,Sql,Sql Server,Sql Server 2008,Stored Procedures,我不熟悉使用存储过程,使用存储过程更新和插入的最佳方法是什么。我有两个表,我可以通过一个不同的ID来匹配它们,我想更新我的加载表和目标表中是否都存在该ID,如果目标表中不存在该项,我想插入。只是一个示例模板将非常有用,谢谢 您应该查找SQL MERGE语句 它允许您执行UPSERT,即,如果键值不存在,则插入,如果键值存在,则更新 但是,在执行更新之前,需要在两个位置检查键值,这会使更新更加复杂。我没有尝试过这个方法,但我认为可以使用视图或CTE来确定ID是否存在于两个表中,然后根据CTE/视图
但一定要先看看合并 如果我理解得很好,您希望在一个表中选择值并将其插入另一个表中。如果第二个表中存在该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>
对此,您可能不需要存储过程。首先告诉我们什么是RDBMS MySql、SQL Server、Oracle。。。您使用的是什么版本?对不起,我使用的是SQL Server 2008 OP使用的是SQL Server而不是MySql