使用集合的概念:
select test_id from tab_test
where (test_name,test_desc) =(zsg1,tttt1) 
intersect
select test_id from tab_test
where (test_name,test_desc) =(zsg2,tttt2) 
minus
select test_id from tab_test
where (test_name,test_desc) =(zsg3,tttt3) 

解决方案 »

  1.   

    分开写不行吗
    select test_id from tab_test
    where (test_id in (select testid from table_test where test_name='zsq1' and test_desc='tttt1')and test_id in(select testid from table_test where test_name='zsq2' and test_desc='tttt2'))
      

  2.   

    select test_id from tab_test where test_name in ('zsg1','zsg2') and test_desc in ('tttt1','tttt2') and decode(test_name||test_desc,'zsg3tttt3',1,0)=0
      

  3.   

    呵呵。如果没理解错的话光用in是得不出楼主要的效果的。select test_id from tab_test where (test_name='zsg1' and test_desc='tttt1') or (test_name='zsg2' and test_desc='tttt2') group by test_id having count(*)>1;