簡體   English   中英

在SQL中合並兩個查詢

[英]Combining Two Queries in SQL

基本上,我需要合並兩個表中PSROLEUSER相等的兩個查詢的結果。 我該怎么做?

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

下面的查詢假定ROLENAME對於每個PSROLEUSER都是唯一的。

SELECT  PSROLEUSER 
FROM    sysadm.PSROLEUSER 
WHERE   ROLENAME IN ('NCC_Manag', 'HRM-Content Amin')
GROUP   BY PSROLEUSER
HAVING  COUNT(*) = 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;

其他方式:

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
select PSROLEUSER from sysadm.PSROLEUSER where ROLENAME in('NCC_Manag','HRM-Content Amin')

試試這個代碼

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

假設它們返回相同的架構,只需對其進行合並。

您也可以將另一個版本與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演示

select distinct psroleuser from psroleuser where rolename = 'NCC_Manag'
and psroleuser in 
(select psroleuser from psroleuser where rolename = 'HRM-Content Amin')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM