mysql a-b,MySQL A或B,但不能同时使用

This seems like an easy query but I cannot seem to get it or relate it to other posts on stack overflow. Would anyone be able to explain... This is what I have so far, it is returning records for all bars where one or both people go.

TBL frequents Schema - drinker VARCHAR(50) PK, bar VARCHAR(50) PK

Bars which are frequented by John or Rebecca but not by both of them

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

)

);

解决方案

Something like this should satisfy the specification:

SELECT f.bar

FROM frequents f

WHERE f.drinker IN ('John','Rebecca')

GROUP

BY f.bar

HAVING COUNT(DISTINCT f.drinker) < 2

get all of bar for 'John' and/or 'Rebecca'

collapse the rows to a single row for each bar

get a count of drinker for each bar

discard rows that have a count of 2 (i.e. both John and Rebecca)

leaving only values of bar for John and not Rebecca or vice versa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值