我有一个用户数据库(id,name),它连接到他们购买的数据库(id,userId,price)。 我想要做的是找到所有没有以500的价格购买的用户。起初我虽然关于这样的查询,但它会返回价格不是500的所有行,而不是用户自己。
select * from purchase p
join user u on u.id = p.userId
and price != 500
有人知道如何对其进行分组,以便只有那些从未购买过500次的用户才会出现吗?
答案 0 :(得分:2)
一种方法是按用户分组,只选择那些purchase
price
500
select u.id, u.name
from user u
left join purchase p on u.id = p.userId
group by u.id, u.name
having sum(p.price = 500) = 0