我有一個名爲Users
(SQL Server 2008 R2)的數據庫表中的用戶列表。除了用戶的UserName
之外,還有兩個字段用於對用戶進行分類 - 爲簡單起見,我們將說Department
和JobTitle
。從表A中選擇匹配表B中兩列的記錄子集
| UserName | Department | JobTitle |
------------------------------------------
| Joe | IT | SysAdmin |
| Jim | IT | DBA |
| Jeff | Sales | SalesMgr |
| Mack | Sales | Rep |
我也有一個表,ActiveJobs
,列出我真正關心的Department
和JobTitle
某些組合。
| Department | JobTitle |
-----------------------------
| IT | SysAdmin |
| Sales | SalesMgr |
| Sales | Rep |
我想從Users
選擇每個記錄中的Department
/JobTitle
的組合在ActiveJobs
匹配。我想這個查詢將做到這一點:
SELECT Users.*
FROM Users
INNER JOIN ActiveJobs DEP
ON Users.Department = DEP.Department
INNER JOIN ActiveJobs JOB
ON Users.JobTitle = JOB.JobTitle
但是返回相同User
記錄不止一次在很多情況下(我認爲這是由Department
列中的重複造成更多 - 但是我真的不明白爲什麼)。對於上面的例子,儘管我希望能得到(Joe,Jim,Mack),但我得到了(Joe,Joe,Jim,Mack)。
什麼查詢會得到子User
的記錄具有匹配組合Department
和Active Jobs
JobTitle
?