2

基本的に、PSROLEUSER が両方のテーブルで等しい場合、これら 2 つのクエリの結果を組み合わせる必要があります。どうすればいいですか?

select PSROLEUSER from sysadm.PSROLEUSER where ROLENAME = 'NCC_Manag';
select PSROLEUSER from sysadm.PSROLEUSER where ROLENAME = 'HRM-Content Amin';
4

7 に答える 7

2

ROLENAME以下のクエリは、がすべての に対して一意であると想定していますPSROLEUSER

SELECT  PSROLEUSER 
FROM    sysadm.PSROLEUSER 
WHERE   ROLENAME IN ('NCC_Manag', 'HRM-Content Amin')
GROUP   BY PSROLEUSER
HAVING  COUNT(*) = 2
于 2013-07-27T16:06:02.717 に答える
2

これは、すべてのロジックをhaving句に入れるアプローチです。

select PSROLEUSER
from sysadm.PSROLEUSER 
group by PSROLEUSER
having sum(case when ROLENAME = 'NCC_Manag' then 1 else 0 end) > 0 and
       sum(case when ROLENAME = 'HRM-Content Amin' then 1 else 0 end) > 0;

このアプローチは非常に一般的であるため、私はこのアプローチが好きです。たとえば、 以外のすべて'NCC_Manag'が必要な場合 'HRM_Content Amin'、次のようにします。

select PSROLEUSER
from sysadm.PSROLEUSER 
group by PSROLEUSER
having sum(case when ROLENAME = 'NCC_Manag' then 1 else 0 end) > 0 and
       sum(case when ROLENAME = 'HRM-Content Amin' then 1 else 0 end) = 0;
于 2013-07-27T16:12:50.947 に答える
1
select PSROLEUSER from sysadm.PSROLEUSER where ROLENAME in('NCC_Manag','HRM-Content Amin')

このコードを試してください

于 2013-07-27T16:16:51.017 に答える
1

別の方法:

select X.PSROLEUSER from
(select PSROLEUSER from sysadm.PSROLEUSER where ROLENAME = 'NCC_Manag') X inner join 
(select PSROLEUSER from sysadm.PSROLEUSER where ROLENAME = 'HRM-Content Amin') Y
on X.PSROLEUSER = Y.PSROLEUSER
于 2013-07-27T16:10:36.343 に答える
0
select PSROLEUSER from sysadm.PSROLEUSER where ROLENAME = 'NCC_Manag'
UNION
select PSROLEUSER from sysadm.PSROLEUSER where ROLENAME = 'HRM-Content Amin'

それらが同じスキーマを返すと仮定すると、それらを結合するだけです。

于 2013-07-27T16:10:27.633 に答える
0
select distinct psroleuser from psroleuser where rolename = 'NCC_Manag'
and psroleuser in 
(select psroleuser from psroleuser where rolename = 'HRM-Content Amin')
于 2014-10-10T09:15:50.777 に答える
0

また、EXISTS 演算子を使用して別のバージョンを使用することもできます。

SELECT t1.PSROLEUSER
FROM sysadm.PSROLEUSER t1
WHERE t1.ROLENAME = 'NCC_Manag'
  AND EXISTS (
              SELECT 1
              FROM sysadm.PSROLEUSER t2
              WHERE t2.ROLENAME = 'HRM-Content Amin'
                AND t1.PSROLEUSER = t2.PSROLEUSER
              )

デモを見るSQLFiddle

于 2013-07-28T06:16:42.083 に答える