一个帐目表A,里面有三个重要字段:serv_id,acct_id,acct_item_type_id,
我想实现的sql是这样的
已知acct_id,根据acct_id找到对应的所有serv_id,假设对应了两个serv_id1,serv_id2。
然后根据acct_id,serv_id,找到对应的所有acct_item_type_id,例如:
1。acct_id,serv_id1在表A中有 acct_item_type_id1,acct_item_tpye_id2
2。acct_id,serv_id2在表A中有 acct_item_type_id1,acct_item_type_id3怎样才能通过sql语句找到 1。和2。的交集呢,也就是sql选出的最后结果是acct_item_type_id1请大家不吝赐教啊!!
我想实现的sql是这样的
已知acct_id,根据acct_id找到对应的所有serv_id,假设对应了两个serv_id1,serv_id2。
然后根据acct_id,serv_id,找到对应的所有acct_item_type_id,例如:
1。acct_id,serv_id1在表A中有 acct_item_type_id1,acct_item_tpye_id2
2。acct_id,serv_id2在表A中有 acct_item_type_id1,acct_item_type_id3怎样才能通过sql语句找到 1。和2。的交集呢,也就是sql选出的最后结果是acct_item_type_id1请大家不吝赐教啊!!
(查询出结果集一的sql)
ninus
(查询出结果集二的sql)
select * from table where
(查询出结果集1的条件集) and (查询出结果集2的条件集)
(
select 1 from
(
select * from table t1 where acct_id and not exists (select 1 from table t2 where t1.acct_id = t2.acct_id and t1.acct_item_type_id = t2.acct_item_type_id and t1.serv_id != t2.serv_id)
) tt2 where tt1.acct_id = tt2.acct_id and tt1.serv_id = tt2.serv_id and tt1.acct_item_type_id = tt2.acct_item_type_id
)
我想实现的sql是这样的
已知acct_id,根据acct_id找到对应的所有serv_id,假设对应了两个serv_id1,serv_id2。
然后根据acct_id,serv_id,找到对应的所有acct_item_type_id,例如:
1。acct_id,serv_id1在表A中有 acct_item_type_id1,acct_item_tpye_id2
2。acct_id,serv_id2在表A中有 acct_item_type_id1,acct_item_type_id3最后结果的acct_item_type_id1,对应的serv_id集合,也是acct_id对应的serv_id集合select acct_item_type_id
where acct_id = ?
group by acct_item_type_id
having count(distinct serv_id) = (
select count(distinct serv_id)
where acct_id = ?
)