我想从表中获取除查询中的行之外的所有行。 更新:根据makeModelDescription,firstRegistration和mileage三个属性,需要在结果集中添加或删除行。仅当所有三个值与行匹配时,才应该是结果集的一部分。 WHERE子句最多包含20个条件。因此我尝试了
SELECT *
FROM cars
WHERE (makeModelDescription<>'Seat Arosa 2.0 Stella' AND
firstRegistration='EZ 03/2005' AND mileage='101.000 km') OR
(makeModelDescription<>'Seat Arosa 3.0 Stella' AND
firstRegistration='EZ 03/2005' AND mileage='101.000 km')
带有样本表:
但不是得到预期的结果:
我得到了结果:
任何有更多经验的人都可以支持并帮助制定正确的查询。
答案 0 :(得分:0)
事实上,您正在使用SELECT
:
SELECT *
FROM cars
WHERE firstRegistration='EZ 03/2005' AND mileage='101.000 km'
因为你在两个模型之间加了OR
。
因此,您只需要查看它们与您所引用的模型的不同之处:
SELECT *
FROM cars
WHERE (makeModelDescription <>'Seat Arosa 2.0 Stella' AND
makeModelDescription <>'Seat Arosa 3.0 Stella')
已编辑:
SELECT *
FROM cars
WHERE (makeModelDescription <>'Seat Arosa 2.0 Stella' AND
makeModelDescription <>'Seat Arosa 3.0 Stella') OR
firstRegistration <>'EZ 03/2005' OR
mileage<>'101.000 km'
答案 1 :(得分:0)
您的WHERE条件在逻辑上是错误的,
(
makeModelDescription<>'Seat Arosa 2.0 Stella'
AND firstRegistration='EZ 03/2005'
AND mileage='101.000 km'
)
OR
(
makeModelDescription<>'Seat Arosa 3.0 Stella'
AND firstRegistration='EZ 03/2005'
AND mileage='101.000 km'
)
现在发生的情况是,当firstRegistration
等于EZ 03/2005
时(以及mileage
等于101.000km
),两个条件都成立。您应该做的只是省略makeModelDescription
等于Seat Arosa 2.0 Stella
OR
Seat Arosa 3.0 Stella
的记录。所以你的查询应该如下,
SELECT *
FROM cars
WHERE
makeModelDescription <>'Seat Arosa 2.0 Stella'
AND
makeModelDescription <>'Seat Arosa 3.0 Stella'