0
Table: Car
Columns: CarID, Value

Table: Tyres
Columns: TyreID, CarID, Brand

我怎样才能选择所有Cars没有对应Tyre的特定Brand. 在这种情况下,一辆汽车可能有许多不同的轮胎,每个轮胎都有不同的品牌。

例如

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
4

2 回答 2

1

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

SELECT CarID 
FROM Car
WHERE NOT EXISTS (
  SELECT 'X'
  FROM Tyres
  WHERE Brand='Brand C'
  and Tyres.carId = Car.carId
)
于 2013-07-19T14:37:20.727 回答
0

您可以使用NOT IN子句

SELECT CarID 
FROM Car
WHERE CarID NOT IN (
  SELECT CarID 
  FROM Tyres
  WHERE Brand='Brand C'
)
于 2013-07-19T14:34:58.857 回答