2
我有兩個名爲'Item'(帶有ItemId和Title的列)和'ItemSpecificationValue'(帶有ItemId,ItemSpecificationValueId的列)的表。SQL Server - 爲同一列選擇兩個不同範圍的值的行
(Item Table)
ItemId | Title
1 | abcd
2 | pqrs
3 | uvwx
(ItemSpecificationValue Table)
ItemId | ItemSpecificationValueId
1 | 11
2 | 50
2 | 55
2 | 115
3 | 11
3 | 163
說,我需要從「項」表中,其具有從rangeA至少一個ItemSpecificationValueId提取所有行:{50,55}和至少一個從範圍b:{11115163}。 所以你看到滿足上述要求的唯一項目是ItemId 2的項目。
到目前爲止,我的工作如下。我想知道是否有任何簡單的方法可以做到這一點,除了參加工會之外,因爲我可能會獲得大量這樣的範圍,因此做大量的正確加入是不可行的。我可以將正確加入的結果保留在臨時表中。只是想知道是否有更聰明的方法。
SELECT Item.ItemId, Item.Title
FROM Item
RIGHT JOIN ItemSpecificationValue
ON ItemSpecificationValue.ItemId = Item.ItemId
WHERE ItemSpecificationValue.ItemSpecificationValueId in ('50','55')
INTERSECT
SELECT Item.ItemId, Item.Title
FROM Item
RIGHT JOIN ItemSpecificationValue
ON ItemSpecificationValue.ItemId = Item.ItemId
WHERE ItemSpecificationValue.ItemSpecificationValueId in ('11','115','163')
真棒!謝謝你sdesdes! –
@ChamzDes - np,很高興能幫到你! – sgeddes