|
|
|
| В базе есть 2 таблицы - для примера: таб1 и таб2. необходимо проверить таб1 на наличие полей из таб2 и в случае совпадения сменить статус у поля в таб1. Пример:
таб1: | таб2:
бланк статус | бланк
ААА0123456789 1 | 0123456789
ВВВ0006543211 1 | 6543211
.....
|
как видно из примера записи могут отличаться, например в таб2 может не присутствовать серия бланка или отсутствовать нули перед номером, но значение из таб2 будет целиком ВСЕГДА присутствовать в таб 1 и только 1 раз, т.к. номер бланка является уникальным. Таким образом задача следующая: скопировать значение номера из таб2, отыскать его в таб1 и сменить у этой записи статус на 2, после этого в таб2 поставить отметку, что запись обработана. Количество записей в каждой из таблиц достигаеть десятков тысяч... Как это реализовать максимально эфективно? Спасибо. | |
|
| |
|
|
|
| Запрос поменяет поле статус в таб1 для всех записей для которых "хвост" совпадает
UPDATE таб1 INNER JOIN таб2 ON right(таб1.бланк,len(таб2.бланк)) = таб2.бланк SET таб1.статус = 2;
|
Только в этом случае
бланку ААА0123456789 соотвтсвует как 0123456789, так и бланк 6789 и бланк 89 | |
|
| |