【发布时间】:2021-07-02 01:57:08
【问题描述】:
我有一张如下表:
TABLE_A:
Value position List vehicle
---------------------------------
A 123 No ABC
A 123 No CDA
A 124 No CDA
A 125 No ABC
B 126 Yes XYZ
我想从 TABLE_A 中为每个位置选择值。
如果列表设置为“否”并且该位置有这辆车“ABC”并且位置中的值相同,那么我需要在我的选择中忽略它。但是如果该位置没有这辆车“ABC”并且列表设置为“NO”,那么我需要选择该行。
我尝试使用“NOT EXISTS”,但这不会返回位置 123 和 124 的任何值。除此之外,我会返回位置 124 的值,但它没有。
SELECT *
FROM TABLE_A
WHERE VEHICLE IS NOT NULL AND NOT EXISTS (SELECT vehicle FROM TABLE_A WHERE position = 125)
AND position = 123;
SELECT *
FROM TABLE_A
WHERE VEHICLE IS NOT NULL AND NOT EXISTS (SELECT vehicle FROM TABLE_A WHERE position = 125)
AND position = 124;
例如:如果我选择位置为 124 的值,我希望它返回该位置的所有值,因为它没有车辆 ID“ABC”,即使它有列表“NO”但如果我使用位置 123,那么它不应该返回任何值,因为该位置有列表“NO”并且它有车辆“ABC”
【问题讨论】:
-
去掉
NOT EXISTS (......)行末尾的分号;- -
您的存在与您的外部查询无关。存在的
position指向哪个表?引擎无法读懂您的想法,并可能将其应用于外部查询。使用别名 -
编辑您的问题并显示您想要的结果。
-
@GordonLinoff 完成了
标签: sql select where-clause oracle12c not-exists