【发布时间】:2020-06-06 14:50:30
【问题描述】:
我想选择V 中的V_CODE,当F_CODE = 'A' 时,哪些记录不与F 共享任何 S 外键。
我尝试了类似的东西
select distinct V_CODE
from V
inner join V_S VS on V.V_ID = VS.V_FK
inner join S on VS.S_FK = S.S_ID
where S._ID not in (
select FS.S_FK
from F
inner join F_S on F.F_ID = F_S.F_FK
where F.F_CODE = 'A'
);
但这并不能完全返回我想要的。 有人可以帮忙吗?提前致谢。
表 F
| F_ID | F_CODE |
| 1 | A |
| 2 | B |
| 3 | C |
表 F_S
| F_FK | S_FK |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
表 S
| S_ID | S_CODE |
| 1 | S1 |
| 2 | S2 |
| 3 | S3 |
表 V_S
| V_FK | S_FK |
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | 1 |
| 3 | 3 |
表五
| V_ID | V_CODE |
| 1 | V1 |
| 2 | V2 |
| 3 | V3 |
在这种情况下,我只想返回 V2,因为当 F_CODE = 'A' 时,它是表 V 中唯一不共享表 S 中的记录的记录
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。