这似乎是一个简单的查询,但是我似乎无法获取它或将其与堆栈溢出时的其他帖子相关联。谁能解释...这是我到目前为止的信息,它正在返回一个或两个人去的所有酒吧的记录。
TBL频繁模式-饮酒者VARCHAR(50)PK,bar VARCHAR(50)PK
John或Rebecca经常光顾的酒吧,但两者都不是
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
)
);
答案 0 :(得分:1)
类似这样的东西应该满足规范:
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
bar
的值,而不为丽贝卡保留值,反之亦然