【发布时间】:2021-09-16 07:37:01
【问题描述】:
我有两张桌子,一张叫
INTER 另一个叫COM
它们之间的关系是1:many
这是两个表的结构
INTER
NUMBER
ADDRESS
COM
NUMBER
CONTACT
REFERENCE
提供有关表格的一些上下文:
INTER 表中的ADDRESS 字段可以是空(空字符串'')
COM 表的CONTACT 字段可以有两种类型:“电子邮件”或“网站”
我想要完成的是:
我想查看来自COM 的所有记录,其中CONTACT='Website' 并将COM 的值插入(INTER.NUMBER,'Website',INTER.ADDRESS)
其中INTER.ADDRESS'' 和INTER.NUMBER 不存在 在COM.NUMBER
否则,我想更新COM.REFERENCE 的值,将其设置为INTER.ADDRESS,其中COM.CONTACT='Website' 和INTER.NUMBER 存在于COM.NUMBER 和INTER.ADDRESS ''
我怎样才能做到这一点?我知道合并语句是什么,但根据文档,合并在过滤查询上效果不佳。另外,我知道存在语句,但我不知道如何使这个查询工作。
如果您想知道,很遗憾,这些表的结构无法修改。
一些样本数据:
INTER
ABCD123,google.com
XUEH342,facebook.com
IISI521,twitter.com
IEIEK885,''
COM
ABCD123, Website, test.com
ABCD123,E-mail,bob@gmail.com
XUEH342,Website,facebook.com
XASE456,Website, stackoverflow.com
XASE456,E-mail,tom@gmail.com
运行查询后,COM 表上的结果如下所示:
ABCD123,Website, google.com
ABCD123,E-mail,bob@gmail.com
XUEH342,Website, facebook.com
IISI521,Website, twitter.com
XASE456,Website, stackoverflow.com
XASE456,E-mail,tom@gmail.com
如您所见,IISI521,twitter.com 已插入,ABCD123,test.com 已更新,IEIEK885,'' 未插入,因为是空字符串。
【问题讨论】:
-
样本数据和预期结果将帮助我们帮助您。以及您的次尝试。
-
好的,让我更新一下问题
标签: sql-server merge exists not-exists