Мне нужно обновить поле на основе наличия строки в другом поле.Мне нужно сделать это для сотен строк поиска.Это то, что я имею до сих пор:
SET SQL_SAFE_UPDATES=0;
UPDATE business_table
SET `chain` = '7-Eleven'
WHERE business_name LIKE BINARY '%7-Eleven%' OR business_name LIKE
BINARY '%7 Eleven%';
UPDATE business_table
SET `chain` = 'A&W'
WHERE business_name LIKE '%A & W%' OR business_name LIKE '%A&W%';
UPDATE business_table
SET `chain` = 'Blenz Coffee'
WHERE business_name LIKE BINARY '%Blenz Coffee%';
UPDATE business_table
SET `chain` = 'Booster Juice'
WHERE business_name LIKE BINARY '%Booster Juice%';
UPDATE business_table
SET `chain` = 'Boston Pizza'
WHERE business_name LIKE BINARY '%Boston Pizza%';
SET SQL_SAFE_UPDATES=1;
Есть ли более эффективный способ сделать это?Я попытался поместить это в хранимую процедуру без отключения SQL_SAFE-UPDATES следующим образом:
UPDATE business_table b
SET `chain` = '7-Eleven'
WHERE b.id = (SELECT id FROM b WHERE business_name LIKE BINARY '%7-Eleven%' OR business_name LIKE BINARY '%7 Eleven%');
Я получаю эту ошибку:
Error Code: 1093. You can't specify target table 'b' for update in FROM clause
Итак, я понимаю, что это за ошибка, но я не понимаюне знаю, как обойти это в моем случае;с сотнями утверждений ОБНОВЛЕНИЕ.
Идеи?