Когда я запускаю следующий код с SELECT в нижней части (прокомментировано в коде), я получаю 12 строк. Затем я комментирую SELECT и раскомментирую UPDATE и запускаю его. Затем вернитесь к SELECT, и есть четыре строки. 8 обновлены и больше не выбраны, когда я использую SELECT, но эти четыре сохраняются. Снова вернитесь к UPDATE, и все еще есть эти четыре строки, когда я SELECT.UPDATE обновляет некоторые, но не все строки
Любые идеи?
WITH cte AS (
SELECT r.Request_ID,
rc.Route_id,
rc.Flight_Information_Region,
rc.Route AS rcRoute,
rd.FIR,
rd.Route AS rdRoute
FROM Route_Country rc
INNER JOIN Flight_Legs_Route_Header rh ON (rc.Route_ID = rh.Route_ID)
INNER JOIN Flight_Legs_Route_DETAIL rd ON (rh.Flight_Leg_Route_ID = rd.Flight_Leg_Route_ID AND rc.Flight_Information_Region = rd.FIR)
INNER JOIN Request r ON (rh.Request_ID = r.Request_ID)
WHERE rc.Route <> rd.Route
AND r.Request_Archived = 'N'
)
UPDATE cte SET rdRoute = rcRoute
--SELECT * FROM cte
Do затрагиваемые строки имеют значение NULL в rcRoute? – DBNull
Вы уверены, что это те самые четыре записи, которые вы видите каждый раз? Это обновление могло бы переключать значения двух наборов записей вперед и назад, если для rdRoute соответствует более одного rcRoute. На первом проходе обновляется первое совпадение. На следующем проходе обновляется другой набор, поскольку условие WHERE rc.Route <> rd.Route' отфильтровывает первое совпадение после его обновления. На третьем проходе первое обновление будет повторяться, так как второе обновление отключило первое и т. Д. –
Я изменил запрос и включил rd.Flight_Leg_Route_Detail_ID, который является уникальным идентификатором для строк rd. Они остаются точно такими же рядами. Вот запрос с его данными: http://i.imgur.com/nOcbTj8.jpg –