从子查询 SQL 服务器更新
UPDATE FROM WHERE Subquery SQL Server
如何使用 UPDATE 语句中的子查询?这是我的查询:
UPDATE car_availability
SET availability_status = 'GOOD'
FROM car_trip AS TRIP
WHERE car_availability.car_no = TRIP.car_no
AND NOT EXISTS (SELECT DISTINCT A.car_No
FROM car_maintenance A
WHERE A.car_no = TRIP.vehicle_id
AND start_date = TRIP.workday)
AND EXISTS (SELECT DISTINCT B.car_No
FROM car_maintenance B
WHERE B.car_no = TRIP.vehicle_id
AND end_date IS NOT NULL)
我得到一个错误'FROM clause in UPDATE and DELETE statements cannot contain subquery sources or joins.'
我想将 availability_status 更新为 GOOD,其中 car_maintenance 中的汽车 start_date 等于 car_trip 的工作日和 [= 中的汽车20=] 其结束日期不为空。
正如@McNets 所说,您需要将 car_availability
table 添加到 FROM
子句中。试试这个:
UPDATE CA
SET availability_status = 'GOOD'
FROM car_availability CA
JOIN car_trip AS TRIP ON CA.car_no = TRIP.car_no
WHERE NOT EXISTS (SELECT DISTINCT A.car_No
FROM car_maintenance A
WHERE A.car_no = TRIP.vehicle_id
AND start_date = TRIP.workday)
AND EXISTS (SELECT DISTINCT B.car_No
FROM car_maintenance B
WHERE B.car_no = TRIP.vehicle_id
AND end_date IS NOT NULL)
如何使用 UPDATE 语句中的子查询?这是我的查询:
UPDATE car_availability
SET availability_status = 'GOOD'
FROM car_trip AS TRIP
WHERE car_availability.car_no = TRIP.car_no
AND NOT EXISTS (SELECT DISTINCT A.car_No
FROM car_maintenance A
WHERE A.car_no = TRIP.vehicle_id
AND start_date = TRIP.workday)
AND EXISTS (SELECT DISTINCT B.car_No
FROM car_maintenance B
WHERE B.car_no = TRIP.vehicle_id
AND end_date IS NOT NULL)
我得到一个错误'FROM clause in UPDATE and DELETE statements cannot contain subquery sources or joins.'
我想将 availability_status 更新为 GOOD,其中 car_maintenance 中的汽车 start_date 等于 car_trip 的工作日和 [= 中的汽车20=] 其结束日期不为空。
正如@McNets 所说,您需要将 car_availability
table 添加到 FROM
子句中。试试这个:
UPDATE CA
SET availability_status = 'GOOD'
FROM car_availability CA
JOIN car_trip AS TRIP ON CA.car_no = TRIP.car_no
WHERE NOT EXISTS (SELECT DISTINCT A.car_No
FROM car_maintenance A
WHERE A.car_no = TRIP.vehicle_id
AND start_date = TRIP.workday)
AND EXISTS (SELECT DISTINCT B.car_No
FROM car_maintenance B
WHERE B.car_no = TRIP.vehicle_id
AND end_date IS NOT NULL)