如果记录存在,则更新,否则插入
我正在尝试在两个 SQL Server 2008 表之间移动一些数据。如果表 2 中存在包含表 1 中的电子邮件的记录,则使用表 1 中的数据更新该记录,否则插入新记录。
在表 1 中,我有很多列;名字、姓氏、电子邮件等。
我不太确定如果表 1 中的电子邮件存在,如何构造查询来更新表 2;如果表 1 中的电子邮件在表 2 中不存在,则如何插入新行。
我尝试在 Google 上进行一些搜索,但大多数解决方案似乎都是通过创建一些存储过程来工作的。所以我想知道是否有人知道如何构建一个合适的查询来实现这个目的?
I'm trying to move some data between two SQL Server 2008 tables. If the record exists in Table2 with the email from Table1 then update that record with the data from Table1, else insert a new record.
In Table1 I have a number of columns; first name, surname, email and so on.
I'm not quite sure how to structure the query to update Table2 if the email from Table1 exists or insert a new row if email from Table1 does not exist in Table2.
I tried doing a few searches on Google but most solutions seem to work by creating some stored procedure. So I wondered if anyone might know how to build a suitable query that might do the trick?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为 MERGE 就是你想要的。
I think MERGE is what you want.
微软发布了一个在 SQL 表之间比较数据的工具,这可能是在某些情况下是不错的选择。
编辑:忘记提及,它还生成一个脚本来插入/更新丢失或不同的行。
为了完整起见,我修改了这个查询,它可以执行您想要的操作,它更新现有的 table2 记录,并根据电子邮件地址添加丢失的记录。
下面的“更新”和“插入缺失”查询就是您想要的查询。
Microsoft released a tool to compare data between SQL tables, this might a good option in certain situations.
Edit: Forgot to mention, it also generates a script to insert/update missing or different rows.
For completeness, I hacked up this query which does what you want, it updates existing table2 records, and adds those that are missing, based off the email address.
The 'updating' and 'insert missing' queries below are the ones you want.