求一条SQL语句,简单应用
某表:t_servicename 
 字段:f1,f2,……,fn(n为确定正整数) 
 查询要求:f1,f2字段类型均为varchar2,现需求查询这张表的某些数据使得这些记录中任意两条记录的f2字段的内容相同且f1字段的内容相同且f1字段的前两位为‘00’
------解决方案--------------------SELECT A.* 
 FROM   t_servicename A 
 INNER  JOIN t_servicename B ON A.F2 = B.F2 AND A.F1 = B.F1 
 WHERE  A.F1 LIKE  '00% ' 
 /
------解决方案--------------------上面的方案不对.即使相同的表关联,但是,查询条件中并没有B 表的信息,这和直接从A表中查是没有区别的.   
 SQL>  select *  from  test;   
 F1         F2 
 ---------- ---------- 
 001        002 
 234        002 
 002        002 
 002        004 
 004        008 
 001        002   
 6 rows selected   
 SQL>   
 SQL>  SELECT A.* 
   2  FROM test A 
   3  INNER JOIN test B ON A.F2 = B.F2 AND A.F1 = B.F1 
   4  WHERE A.F1 LIKE  '00% ' 
   5  ;   
 F1         F2 
 ---------- ---------- 
 001        002 
 001        002 
 001        002 
 001        002 
 002        002 
 002        004 
 004        008   
 7 rows selected     
 搂主的条件有两个,一是f1满足 like  '00%, 二是任意两行满足f1,f2分别相等,其实将条件2归纳一下,就是所有结果集中,f1,f2字段相同. 
 那么可以用下面的方案得到结果.    
 SQL>  select * from  test where (f1,f2)  in ( select f1 ,f2 from test where f1 like  '00% ' and rownum <2);   
 F1         F2 
 ---------- ---------- 
 001        002 
 001        002   
 SQL>