Удаление данных с помощью select из другой базы данных

#mysql #sql

#mysql #sql

Вопрос:

Я хочу удалить данные из одной базы данных с помощью выбора из другой.

 delete FROM organization o 
WHERE o.id IN 
(select 100   s.id_status FROM database2.status s) 
  

Для этого, как я могу удалить эти поля из этого выбора из 2-й базы данных? Скорее всего, это упущение с моей стороны, но я не могу точно определить точную проблему, поскольку она работает, когда я заменяю delete from на select * from …

Комментарии:

1. Пожалуйста, предоставьте образцы данных, желаемые результаты и четкое объяснение того, что вы хотите сделать. Ваше намерение неясно.

2. Не уверен, что это хорошая идея. Предполагается, что базы данных должны быть изолированы. Возможно, вам следует получить все идентификаторы, которые вы хотите удалить, а затем использовать другой запрос для удаления.

3. У меня есть несколько строк данных в базе данных 1 — табличная организация. Идентификатор столбца в таблице organization имеет то же значение, что и столбец id_status из другой базы данных в таблице с именем status .

4. Если o.id имеет то же значение, s.id_status что и тогда, зачем вам добавлять 100 в s.id_status столбец?

5. @GuillaumeF. В mysql эти две концепции фактически совпадают…

Ответ №1:

Вы хотите удалить из обеих таблиц? Если это так, используйте форму объединения и удаление нескольких таблиц

 DELETE t1.*, t2.*
FROM organization t1
JOIN database2.status t2 ON t1.id = t2.id_status    100
  

или

 DELETE t1.*, t2.*
FROM organization t1
JOIN database2.status t2 ON t1.id - 100 = t2.id_status
  

Если organization таблица маленькая, то предпочтительнее 2-й вариант. Конечно, индекс by database2.status (id_status) должен существовать для улучшения.


Нет, я просто хочу удалить данные из организации, поскольку статус должен оставаться неизменным, поскольку он используется для импорта данных в другие таблицы

Если это так, просто используйте DELETE t1.* вместо DELETE t1.*, t2.* .

Комментарии:

1. Нет, я просто хочу удалить данные из организации, поскольку статус должен оставаться неизменным, поскольку он используется для импорта данных в другие таблицы. 🙂