Как обновить столбец на основе сравнения со значением из другой таблицы - PullRequest
0 голосов
/ 25 октября 2019

Я создал скрипт для обновления столбца на основе результата сравнения между значениями в двух таблицах. Этот скрипт работает, когда я создал копии этих таблиц где-то еще, но он обновляет нулевые значения, когда я применил его в действующей системе

У меня есть две таблицы C1 и C2 .Table C2 имеет несколько столбцов, включая столбец с именем EXIT_DATE, который мне нужно сравнить со столбцом с именем RECEIPTDATE в таблице C1, где MEMBER_NUMBERS match и EXIT_DATE больше RECEIPTDATE. Когда условие выполнено, мне нужно установить столбец USED в таблице C1 на Y.

UPDATE  SS_CONTRIBUTIONS c1
set C1.USED = 'Y'
 where SCHEME_ID = 1 and rowid <
     (
      select max(rowid)
        from SS_BENEFIT c2
       where c2.MEMBERID= c1.MEMBER_ID
       and c2.EXIT_DATE > c1.RECEIPTDATE
       );commit;

Я ожидаю, что будет обновлено 350000 записей, но при этом обновится 0 записей

1 Ответ

3 голосов
/ 25 октября 2019

Я бы рекомендовал снова использовать rowid здесь. Этот псевдостолбец представляет адрес строки (номер объекта, блок данных, ...), и я не могу понять, как это было бы полезно для того, что вы пытаетесь выполнить.

Я думаю, что коррелированный подзапрос должен нормально работать в вашем случае:

update ss_contributions c1 
set c1.used = 'Y' 
where 
    c1.scheme_id = 1
    and c1.receiptdate < (
        select max(c2.exit_date)
        from ss_benefit c2 
        where c2.memberid= c1.member_id
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...