这似乎是一个简单的查询,但我似乎无法得到它,也无法将它与堆栈溢出上的其他文章联系起来。有谁能解释。。。这是我到目前为止,它是返回的记录,所有酒吧,其中一个或两个人去。
tbl frequents schema-饮酒者varchar(50)pk,酒吧varchar(50)pk
约翰或丽贝卡经常光顾的酒吧,但他们两人都不常光顾
SELECT DISTINCT bar
FROM frequents
WHERE drinker = 'John' XOR drinker = 'Rebecca'
AND bar NOT IN (
SELECT f1.bar
FROM frequents f1, frequents f2
WHERE (
f1.drinker = 'John'
AND f2.drinker = 'Rebecca'
AND f1.bar = f2.bar
)
);
1条答案
按热度按时间ghg1uchk1#
类似的内容应满足规范要求:
获取所有
bar
“约翰”和/或“丽贝卡”将每行折叠为一行
bar
数一数drinker
对于每个酒吧丢弃计数为2的行(即john和rebecca)
只留下
bar
为了约翰而不是丽贝卡,反之亦然