2011-11-04 29 views
4

我遇到了編寫嚴格查詢的問題。我有以下表(作爲一個例子)SQL Server強硬查詢

fusionId | productId | departmentId 
    1 |  1  |  1 
    2 |  1  |  2 
    3 |  2  |  1 
    4 |  3  |  2 

我想要查詢我可以傳遞兩個departmentId「s至(1,2)和用於查詢返回productId僅當兩個departmentId匹配相同的productId

因此,舉例來說,如果我把departmentId的1 & 2我會得到的結果

productId 
    1 

這可能嗎?

回答

11
SELECT productId 
FROM YourTable 
WHERE departmentId IN (1,2) 
GROUP BY productId 
HAVING COUNT(DISTINCT departmentId) = 2 

或者

SELECT productId 
FROM YourTable 
WHERE departmentId = 1 
INTERSECT 
SELECT productId 
FROM YourTable 
WHERE departmentId = 2 
+0

非常好,謝謝 – twsJames

+0

+1只是爲了我的雷達堅持一個新的保留字。 –

0
Create Table Temporary 
(
    fusionId int, 
    productId int, 
    departmentId int, 
) 

insert into Temporary values (1,1,1),(2,1,2),(3,2,1),(4,3,2) 

Select productId from Temporary 
Where productId in (Select productId from Temporary where departmentId = 1) and departmentId =2 
0
SELECT productId 
FROM YourTable 
WHERE departmentId IN (1,2) 
GROUP bY productId 
HAVING COUNT(productId) > 1