exists 这个里面得要包含和外面表的关系的。
select 消费号,sum(金额)金额 from 护理卡消费 T
where exists (
select distinct a.消费号 from 护理卡消费历史 a left join 护理卡消费 d on a.消费号=d.消费号
where a.服务名称 in (select b.服务名称 from 服务类别 b where b.服务项目类别='面部护理')
and t.消费号=a.消费号 )
group by 金额,消费号
从效率上来讲不推荐用in, 因为in全进行全表扫描, 效率极低, 最好用exists, 你的要求如果用exists是这样写.
select * from b
where exists (select 'x' from a where a.buyid = b.buyid and 后边是原有的条件)
上面两种都说的对,视数据两大小而言
如b表数据大,a表数据小,建议使用in,效率高
反之,用exists
AB表应该有联系,某字段有主外键联系,如A表中的a_id与
B表中的b_id
可以用多表查询
select * from B表 where b_id in (select a_id from A表 where 列=BuyID)
select * from b where buyid in (select buyid from a where 条件)