PRODUCTID;NAME
1 ;BMW
2 ;AUDI
3 ;Mercedes
4 ;Volvo
CATID;CATNAME
1 ;Car
2 ;Motorcicle;
3 ;Bus
PRODUCTID;CATID;
1 ;1
1 ;2
2 ;1
3 ;1
4 ;3
如果我使用sql
SELECT productID FROM productCategiresRel WHERE catID IN (1,2)
结果是
productCategiresRel
PRODUCTID;CATID;
1 ;1
1 ;2
2 ;1
3 ;1
4 ;3
但是我希望选择这些产品,它们在两个选择的类别(汽车和摩托车)中都有代表 结果应该是
PRODUCTID;CATID;
1 ;1 (Car)
1 ;2 (Motorcicle)
答案 0 :(得分:2)
您可以使用EXISTS
多次检查。
SELECT *
FROM products
WHERE EXISTS (SELECT ''
FROM productCategiresRel
WHERE catID = 1
AND productCategiresRel.productId = products.productId)
AND EXISTS (SELECT ''
FROM productCategiresRel
WHERE catID = 2
AND productCategiresRel.productId = products.productId)
答案 1 :(得分:0)
或者,如果您想要查找多个类别中的所有产品 - 不仅仅是在类别1和类别2中 - 请尝试:
SELECT *
FROM products
WHERE productID IN (
SELECT productID
FROM productCategiresRel
GROUP BY productID
HAVING COUNT(*) > 1
);