MySQL A或B,但不是两者都有
这似乎是一个简单的查询,但我似乎无法获取它,也无法将其与堆栈溢出上的其他帖子联系起来。谁能解释一下。。。这就是我到目前为止所拥有的,它返回了一个人或两个人去的所有酒吧的记录 TBL频繁模式-饮酒者VARCHAR50 PK,bar VARCHAR50 PK 约翰或丽贝卡经常光顾的酒吧,但他们两人都不常光顾MySQL A或B,但不是两者都有,mysql,mysql-workbench,relation,self-join,Mysql,Mysql Workbench,Relation,Self Join,这似乎是一个简单的查询,但我似乎无法获取它,也无法将其与堆栈溢出上的其他帖子联系起来。谁能解释一下。。。这就是我到目前为止所拥有的,它返回了一个人或两个人去的所有酒吧的记录 TBL频繁模式-饮酒者VARCHAR50 PK,bar VARCHAR50 PK 约翰或丽贝卡经常光顾的酒吧,但他们两人都不常光顾 SELECT DISTINCT bar FROM frequents WHERE drinker = 'John' XOR drinker = 'Rebecca' AND bar NOT
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
为“约翰”和/或“丽贝卡”获得所有的酒吧
将每个栏的行折叠为一行
每一个酒吧都有一个酒鬼
丢弃计数为2的行,即John和Rebecca
只给约翰留下酒吧的价值观,而不是丽贝卡,反之亦然
我不知道你可以在count中使用distinct关键字。那就容易多了,谢谢!