Доступ к SQL Update одной таблицы в соединении на основе значения в той же таблице

У меня есть таблица в Access называетсяtempSpring_ASN»со следующими полями (среди прочих):

SHP_CUSTOM_5 (AutoNumber)

RECORD_TYPE (текст)

PO_NUM (текст).

Мне нужно изменить значение RECORD_TYPE, так что если PO_NUM совпадает с PO_NUM в предыдущей записи, то RECORD_TYPE должно быть "LIN»иначе (или если этопервая запись), RECORD_TYPE должен быть "HDR».I»

мы создали следующий запрос, чтобы получить правильное новое значение для RECORD_TYPE: I '

SELECT TOP 1 t1.SHP_CUSTOM_5,
    t1.PO_NUM AS CurrentValue,
    NULL AS PreviousValue,
    "HDR" AS RECORD_TYPE
FROM tempSpring_ASN AS t1
ORDER BY t1.SHP_CUSTOM_5
UNION ALL
SELECT t1.SHP_CUSTOM_5,
    t1.PO_NUM AS CurrentValue,
    t2.PO_NUM AS PreviousValue,
    IIf([CurrentValue]=[PreviousValue],'LIN','HDR') AS RECORD_TYPE
FROM tempSpring_ASN AS t1,
    tempSpring_ASN AS t2
WHERE t1.SHP_CUSTOM_5 = t2.SHP_CUSTOM_5 + 1
ORDER BY t1.SHP_CUSTOM_5;

мы сохранили этот запрос как "tempSpring_ASN_With_PreviousRow», Сейчас я'Я пытаюсь использовать это для обновления исходной таблицы tempSpring_ASN следующим запросом:

UPDATE tempSpring_ASN INNER JOIN tempSpring_ASN_With_PreviousRow ON tempSpring_ASN.SHP_CUSTOM_5 = tempSpring_ASN_With_PreviousRow.SHP_CUSTOM_5 SET tempSpring_ASN.RECORD_TYPE = [tempSpring_ASN_With_PreviousRow].[RECORD_TYPE];

но я'Я получаю "Операция должна использовать обновляемый запрос. «Я»я не уверен, если этопотому что япытаюсь обновить одну таблицу в соединении, или потому чтоЯ пытаюсь обновить таблицу на основе значения в той же таблице, или из-за чего-то еще. Независимо от того, яищу то, что работает.

Спасибо!

Обновить (не каламбур): я

мы пробовали следующий запрос на обновление:

UPDATE tempSpring_ASN INNER JOIN Table5 ON tempSpring_ASN.SHP_CUSTOM_5 = Table5.SHP_CUSTOM_5 SET tempSpring_ASN.RECORD_TYPE = "zzz";

и это работало нормально. Результатом было то, что tempSpring_ASN был обновлен, но Table5 не былт. Очевидно, что если две таблицы объединены в операторе SQL, даже если вы запустили обновление для одной таблицы, оно все равно победит 'Попытайтесь обновить другую таблицу в соединении. В таком случае яя не уверен, почему мой оригинальный запрос на обновление выигралт работа. Я знаю, что tempSpring_ASN_With_PreviousRow isn 'T обновляется, потому что этозапрос UNION, но яя непытаясь обновить его. Скорее яя пытаюсь обновить tempSpring_ASN - другую таблицу в соединении, котораяявляется обновляемый.

Обновление 2: Затем я попытался использовать коррелированный подзапрос следующим образом:

UPDATE tempSpring_ASN AS t
SET t.RECORD_TYPE = (
        SELECT RECORD_TYPE
        FROM (
            SELECT TOP 1 t1.SHP_CUSTOM_5,
                t1.PO_NUM AS CurrentValue,
                NULL AS PreviousValue,
                "HDR" AS RECORD_TYPE
            FROM tempSpring_ASN AS t1
            ORDER BY t1.SHP_CUSTOM_5
            UNION ALL
            SELECT t1.SHP_CUSTOM_5,
                t1.PO_NUM AS CurrentValue,
                t2.PO_NUM AS PreviousValue,
                IIf([CurrentValue] = [PreviousValue], 'LIN', 'HDR') AS RECORD_TYPE
            FROM tempSpring_ASN AS t1,
                tempSpring_ASN AS t2
            WHERE t1.SHP_CUSTOM_5 = t2.SHP_CUSTOM_5 + 1
            ORDER BY t1.SHP_CUSTOM_5
            )
        WHERE SHP_CUSTOM_5 = t.SHP_CUSTOM_5
        );

но я'я все еще получаюОперация должна использовать обновляемый запрос. "

Обновление 3:

Я считаю, что ошибка связана с тем, что ям с помощью запроса объединения. Чтобы изолировать проблему, ямы попробовали следующее (что НЕ дало бы желаемого результата, но помогло бы диагностировать проблему):

UPDATE tempSpring_ASN AS t
SET t.RECORD_TYPE = (
        SELECT TOP 1 RECORD_TYPE
        FROM tempSpring_ASN_With_PreviousRow
        );

Это дало мне ту же ошибку. Теперь возникает вопрос: почемуt Я использую одно значение вывода запроса объединения, чтобы установить значение в наборе записей?

Ответы на вопрос(1)

Ваш ответ на вопрос