簡體   English   中英

SQL查詢:具有不同值的內部聯接

[英]SQL query : Inner join with distinct values

我有兩個表:

表格1

ID | Name          
12   User1          
77   CostCenter1    
78   CostCenter2    
79   CostCenter3    
14   User2

表2

UserID | AssignedCostCenter
12   77       
12   78   
12   79    
14   78    

第一個表收集身份(用戶,成本中心)。 第二個表代表用戶及其允許的CostCenter。

我想實現以下目標:查詢應返回一個列,該列具有分配了超過1個成本中心(兩個或更多)的(唯一)用戶列表。

我首先通過以下兩個表聯接:

Select Table 1.Name
from  Table 1
inner join Table 1.ID = Table 2.UserID

結果是:

User1
User1
User1
User2

由於基於ID的inner join聯接,您將獲得“ user1”和“ user2”。 要獲取已分配了多個成本中心(兩個或多個)的用戶列表,請將查詢修改為:

SELECT Table 1.Name
FROM Table 1
INNER JOIN Table 2 ON Table 1.ID = Table 2.UserID
GROUP BY Table 1.Name
HAVING count(Table 1.name) > 1

table2userid上使用group by允許使用have having clausehaving clause過濾出只有1個成本中心的人,然后對該結果的內部聯接將僅列出具有多個成本中心的人的姓名。

SELECT
    Table1.Name
FROM Table1
INNER JOIN (
    SELECT
        UserID
    FROM Table2
    GROUP BY
        UserID
    HAVING COUNT(UserID) > 1
    ) AS t2 ON Table1.ID = t2.UserID

您的問題尚不清楚表2是否可以重復。 因此,將查詢查詢為:

SELECT t1.Name
FROM Table1 t1 JOIN
     Table2 t2
     ON t1.ID = t2.UserID
GROUP BY t1.Name
HAVING MIN(t2.AssignedCostCenter) <> MAX(t2. AssignedCostCenter);

暫無
暫無

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

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