【发布时间】:2021-09-03 08:53:53
【问题描述】:
为了简单起见,假设我有两张桌子。一个叫People,另一个叫Contacting
People Table
ID primary key
NAME
WEBSITE
EMAIL
Contacting Table
ID (foreign key to People ID)
WAY_OF_CONTACTING
REFERENCE
逻辑如下:对于People 表中的每个人,Contacting 表中可能有几条记录。显然,People和Contacting之间的relationship是1:many。
WAY_OF_CONTACTING 只能有 2 个值:"Email" 和 "Website",REFERENCE 字段包含电子邮件或网站名称。 Contacting table 的主键是 composiste primary key,由 ID 和 Way_Of_Contacting 组成。 (这意味着,对于每个 ID,他们最多只能拥有 一个 电子邮件和 一个 网站)
人们每天晚上都会删除人们表上的记录,并全天填充。
People 表中可能会发生 4 件事:
- 网站和电子邮件为空
- 网站为空,但没有电子邮件
- 电子邮件为空,但不是电子邮件
- 网站和电子邮件都不是空的
我的问题如下:
对于 People 表中的每条记录,谁的 Website 字段不为空 ID matches 和 Way_Of_Contacting='Website'
对于People 表中的每条记录,谁的Email 字段不为空 我想检查if there exists Contacting 表中的一条记录,其中ID matches 和 Way_Of_Contacting='Email'
在这两种情况下,如果记录不存在,则创建一个记录。
这怎么可能实现?
我尝试过使用merge 和if not exists,但似乎找不到正确的答案
【问题讨论】:
标签: sql sql-server sql-server-2012 sql-insert exists