我需要选择从2个不同分支租用同一部电影的客户的号码(cid)。我的表格如下:
RENTED
(cid, copyid)
12345 99999
12345 88888
COPY
(copyid, mid, bid)
99999 444 123
88888 444 456
因此,一个客户(12345)从两个不同的分支(123,456)租用了相同的移动(444)。我不确定如何比较两个不同记录中的值,值mid = mid但bid!= bid。我尝试使用'some'和'all',但这没有给我任何行(代码如下)
select cid
from rented R join copy CP on R.copyid = CP.copyid
where CP.mid = all (select mid from copy where CP.mid = copy.mid) and CP.bid != some (select bid
from copy where CP.bid = copy.bid);
我的输出应该是
cid
12345
答案 0 :(得分:3)
您可以使用HAVING
子句。以下查询将列出曾多次租借同一部电影的所有客户:
SELECT r.cid
FROM rented r
JOIN copy p ON r.copyid = p.copyid
GROUP BY r.cid, p.mid
HAVING COUNT(DISTINCT c.bid) > 1
答案 1 :(得分:0)
在每张桌子上使用一次传递:
从中选择distinct(cid) 选择cid,count(bid)over(分区由r.cid,c.mid)dist_branch 从租来的r,复制c 其中r.copyid = c.copyid) dist_branch> 1;