create view viewname
as
select * from view1  f where f.INSTANCE_ID in
 ( select t.INSTANCE_ID  from view2  t  where t.USER_NAME='liuz' and t.STATE=4 )
 and f.user_name<>'liuz' and f.STATE=1;

解决方案 »

  1.   

    是这样,我需要写一个view,通过view查询,不过这个view中应该没有user_name,这个条件。view写好后,user_name作为一个查询条件查询view。
      比如select * from view where user_name='liuz' 
    不过这个view现在是使用了2个user_name,我不会写这个view。
      

  2.   

    把你的句子改写一下就可以了
    select f.*,t.user_name user_name1 from view1  f ,view2  t
    where f.INSTANCE_ID =t.INSTANCE_ID  
    and t.STATE=4 
    and f.STATE=1
    and t.USER_NAME='liuz'
    and f.user_name<>'liuz' 
    逻辑是相同的而且可能比你的句子执行速度还要快现在你在创建视图
    Create view viewname
    select f.*,t.user_name user_name1 from view1  f ,view2  t
    where f.INSTANCE_ID =t.INSTANCE_ID  
    and t.STATE=4 
    and f.STATE=1以后的查询你可以写
    select * from viewname where 
    and USER_NAME1='liuz'
    and user_name<>'liuz' 我们只是按照你的句子改写,如果你讲出你的业务逻辑也许有更好的解法
      

  3.   

    上面写错了多了一个'and'应该是
    select * from viewname where 
    USER_NAME1='liuz'
    and user_name<>'liuz'