Удалить из нескольких таблиц на основе даты - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь удалить записи с одинаковым идентификатором из 3 таблиц.Таблицы выглядят примерно так:

Table1
+----------+----------------+-----------+---------+----------+
| commonid | creation_date  | column 1  | column 2| column 3 |
+----------+----------------+-----------+---------+----------+

Table2
+----------+---------+----------+---------+----------+
| commonid | column 1| column 2 | column 3| column 4 |
+----------+---------+----------+---------+----------+

Table3
+----------+---------+----------+---------+----------+
| commonid | column 1| column 2 | column 3| column 4 |
+----------+---------+----------+---------+----------+

Таким образом, чтобы выбрать все данные, которые я использую

SELECT * FROM table1
INNER JOIN table2 
ON table1.commonid = table2.commonid 
INNER JOIN table3
ON table1.commonid = table3.commonid
WHERE creation_date = '2018-08-01 04:13:50'

, которые будут возвращать 6 строк.Чтобы удалить, я попытаюсь:

DELETE table1 FROM table1
INNER JOIN table2 
ON table1.commonid = table2.commonid 
INNER JOIN table3
ON table1.commonid = table3.commonid
WHERE creation_date = '2018-08-01 04:13:50'

, который возвращает 1 затронутую строку, я бы ожидал 6. Когда я снова запускаю первый запрос, я получаю 0 результатов.На общее количество строк в таблице 3 это не влияет.

Как удалить строки с одинаковыми commonid из каждой таблицы?

1 Ответ

0 голосов
/ 11 октября 2018

Вам необходимо указать все три таблицы в качестве целей для удаления:

DELETE t1, t2, t3
FROM table1 t1
INNER JOIN table2 t2
    ON t1.commonid = t2.commonid 
INNER JOIN table3 t3
    ON t1.commonid = t3.commonid
WHERE
    creation_date = '2018-08-01 04:13:50';

В настоящее время вы говорите MySQL только об удалении из table1.

...