我尝试运行查询以从以下表格中获取以下结果
BaseVehicle表
BaseVehicleId DeleteDate
1 NULL
2 NULL
3 NULL
4 NULL
车辆表
VehicleId BaseVehicleId DeleteDate
1 1 NULL
2 1 NULL
3 2 08-01-2017
4 3 NULL
5 3 08-01-2017
6 3 NULL
7 1 NULL
8 2 08-01-2017
结果表
BaseVehicleId
2
4
如果记录处于活动状态,则DeleteDate将为null。
BaseVehicle(一)之间有一对多的映射 - >车辆(很多)
我需要查询来获取基本车辆ID未与Vehicle表映射的记录,以及当与DeleteDate不为空的Base Vehicle相关联的所有车辆时。请告诉我如何实现这一目标。
我需要获取所有相关联的VehicleId的基本车辆ID IdDd的deleteDate不为空(如车辆表中的BaseVehicleId = 2,我不应该读取BaseVehicleId = 3的值)我的结果集)
答案 0 :(得分:2)
有时候你应该采取相反的方式。
首先,我们必须查询Vehicle
表中没有DeleteDate
字段集的所有记录。我们应该排除这些记录和BaseVehicleId
与之相关的记录。这意味着我们只会获得BaseVehicleId
表中不存在的Vehicle
,或者这些ID的所有记录都设置为DeleteDate
。
SELECT BaseVehicleId
FROM BaseVehicle
WHERE BaseVehicleId NOT IN (SELECT BaseVehicleId FROM Vehicle WHERE DeleteDate IS NULL)