#mysql
Вопрос:
У меня есть вариант использования, когда мне нужно удалить данные и выполнить вставку с последними обновлениями
- Есть ли способ, которым я могу выполнить массовое удаление и вставить.
- Table_A, содержит несколько записей подписки.
- Таблица B имеет уникальную подписку
- Таблица C похожа на промежуточную таблицу, имеющую несколько подписок с последними обновлениями.
Как только я удалю старые записи, я смогу просто вставить их.
Поскольку в таблице C нет ключевого столбца, я не могу выполнить upsert
Я использую
DELETE FROM table_A
WHERE subscription IN(SELECT subscription
FROM table_b);
и затем
Insert into table_A
SELECT subscription,
<<other columns>>
from table_C
Комментарии:
1. Какой у тебя вопрос? То, что вы написали, похоже, должно сработать.
2. если вы обновляете таблицу A, не должно иметь значения, есть ли в таблице C ключевой столбец. Это таблица А, для которой может потребоваться уникальный индекс
3. @Барнер,@Гарр Годфери, Мой запрос работает. У меня есть эти проблемы.
4. @Барнер,@Гарр Годфери, Мой запрос работает. У меня есть эти проблемы. 1)Поскольку он удаляет одну подписку за раз, они недоступны для запроса до завершения вставки. 2) Проблема с производительностью — удаление одной подписки за раз с предложением in, похоже, является проблемой. Есть ли способ выполнить массовое удаление, например, хранимую процедуру, в которой я передаю подписку ex: 1000, удаляю их и вставляю. вместо этого выполните удаление и вставку. Надеюсь, я объяснил свою проблему,