用一个表里的结果做另一个表的查询条件

2024-11-07 16:59:54
推荐回答(5个)
回答1:

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 金额,消费号

回答2:

从效率上来讲不推荐用in, 因为in全进行全表扫描, 效率极低, 最好用exists, 你的要求如果用exists是这样写.

select * from b
where exists (select 'x' from a where a.buyid = b.buyid and 后边是原有的条件)

回答3:

上面两种都说的对,视数据两大小而言
如b表数据大,a表数据小,建议使用in,效率高
反之,用exists

回答4:

AB表应该有联系,某字段有主外键联系,如A表中的a_id与
B表中的b_id
可以用多表查询
select * from B表 where b_id in (select a_id from A表 where 列=BuyID)

回答5:

select * from b where buyid in (select buyid from a where 条件)