tableA
Aid | Aname |
1 | univer |
2 | teaser |
tableB
Bid | Bname |
66 | ako |
77 | fas |
88 | yh |
tableA
中的值应与tableB
tableC
Aid | Bid |
1 | 66 |
1 | 88 |
2 | 66 |
2 | 77 |
现在,我想从tableA
中tableB
中选择tableC
中不属于Aid=1
的值。
例如,我想查找Bid=77
和tableC
,因为它们在Aid=2
中找不到,
再次找到Bid=88
和tableC
,因为在EXPECTED RESULTS
Aid | Bid |
1 | 77 |
2 | 88 |
中找不到它们。
{{1}}
答案 0 :(得分:3)
您可以使用cross join
生成所有排列,然后您可以使用not exists
运算符过滤掉tablec
中已存在的排列:
SELECT aid, bid
FROM tablea a
CROSS JOIN tableb b
WHERE NOT EXISTS (SELECT *
FROM tablec c
WHERE c.aid = a.aid AND c.bid = b.bid)
示例结果:
AID BID
1 77
2 88
结果为SQL Fiddle。