这似乎是一个简单的查询,但我似乎无法理解它或将其与堆栈溢出上的其他帖子联系起来。谁能解释一下...这是我到目前为止所拥有的,它正在返回一个人或两个人去过的所有酒吧的记录。
TBL 常见模式 - 饮酒者 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
)
);
像这样的东西应该满足规范:
SELECT f.bar
FROM frequents f
WHERE f.drinker IN ('John','Rebecca')
GROUP
BY f.bar
HAVING COUNT(DISTINCT f.drinker) < 2
- 得到全部
bar
对于“约翰”和/或“丽贝卡”
- 将每个行折叠为一行
bar
- 得到一个计数
drinker
对于每个酒吧
- 丢弃计数为 2 的行(即 John 和 Rebecca)
- 只留下值
bar
对于约翰而不是丽贝卡,反之亦然
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)