2016-09-13 6 views
2

私はinのクエリ文を再利用する可能性がどのようにクエリINサブクエリのクエリを再利用するには?

select a.id, a.user_id, a.approver_id, a.second_approver_id 
from tbl_approve_master a 
WHERE user_id in (select id from tbl_user where name like '%john%') 
or approver_id in (select id from tbl_user where name like '%john%') 
or second_approver_id in (select id from tbl_user where name like '%john%') 

の下にありますか?私はHow to reuse a sub query in sql?の受け入れ回答を

with cte as (select id from tbl_user where name like '%john%') 
select a.id, a.user_id, a.approver_id, a.second_approver_id 
from tbl_approve_master a 
WHERE user_id in cte 
or approver_id in cte 
or second_approver_id in cte 

としましたが、これは問題ありません。どうすれば達成できますか?

答えて

2

これを試してみてください:

select a.id, a.user_id, a.approver_id, a.second_approver_id 
from tbl_approve_master a 
WHERE exists (
    select * 
    from tbl_user u 
    where u.name like '%john%' 
    and u.id in (a.user_id, a.approver_id, a.second_approver_id) 
) 
+0

はあなたの先生ありがとうございました。それが私が探しているものです。 – Cataclysm

0

このクエリを試してみてください。あなたはこのように試すことができ

;with cte as (select id from tbl_user where name like '%john%') 
select a.id, a.user_id, a.approver_id, a.second_approver_id 
from tbl_approve_master a 
join cte 
    on user_id = cte.id or approver_id = cte.id or second_approver_id = cte.id 
+0

私は重複した結果を得ました。 – Cataclysm

1

select a.id, a.user_id, a.approver_id, a.second_approver_id 
from tbl_approve_master a 
where exists (select 1 from tbl_user at 
       where (a.user_id = at.id 
       or a.approver_id = at.id 
       or a.second_approver_id =id) 
       and (at.name like '%john%')) 
関連する問題