选择在另一个表中没有特定值的所有项目

时间:2013-07-19 14:32:13

标签: tsql

Table: Car
Columns: CarID, Value

Table: Tyres
Columns: TyreID, CarID, Brand

如何选择没有特定Cars的相应Tyre的所有Brand。在这种情况下,汽车可能有许多不同的轮胎,每个轮胎都有不同的品牌。

E.g。

Car1有4个轮胎,2个品牌A,1个品牌B,1个品牌C. Car2有3个轮胎,1个品牌A,2个品牌B. Car3有4个轮胎,3个品牌A,1个品牌C。

我想找出所有没有品牌C轮胎的车辆的CarID。在这种情况下,结果将是Car2。

示例数据:

Car
CarID   Value
--------------
1       Abc
2       Def
3       Geh

Tyre
TyreID  CarID   Brand
----------------
1       1   Brand A
2       1   Brand A
3       1   Brand B
4       1   Brand C
5       2   Brand A
6       2   Brand B
7       2   Brand B
8       3   Brand A
9       3   Brand A
10      3   Brand A
11      3   Brand C

Result
ID      2

2 个答案:

答案 0 :(得分:1)

使用NOT EXISTS而不是IN,因为IN子句的限制为2500行

SELECT CarID 
FROM Car
WHERE NOT EXISTS (
  SELECT 'X'
  FROM Tyres
  WHERE Brand='Brand C'
  and Tyres.carId = Car.carId
)

答案 1 :(得分:0)

您可以使用NOT IN子句

SELECT CarID 
FROM Car
WHERE CarID NOT IN (
  SELECT CarID 
  FROM Tyres
  WHERE Brand='Brand C'
)