ОШИБКА 1109 (42S02): неизвестная таблица в MULTI DELETE - PullRequest
0 голосов
/ 20 июня 2019

Я использую временную таблицу t с этими запросами, чтобы удалить дублированные строки из comment таблицы:

CREATE TABLE t (
        id INT NOT NULL,
        hash BINARY(20),
    PRIMARY KEY(id),
    INDEX(hash) ) ENGINE=InnoDB;

INSERT INTO t (id, hash)
    SELECT id, UNHEX(SHA1(body))
        FROM `comment`;

DELETE FROM `comment`
       USING t AS t1,
             t AS t2
       WHERE t1.id = comment.id
         AND t2.hash = t1.hash AND t2.id < t1.id;

Но на этапе удаления я получаю эту ошибку:

ERROR 1109 (42S02): Unknown table 'comment' in MULTI DELETE 

Как я могу это исправить?

1 Ответ

2 голосов
/ 20 июня 2019

MySQL не поддерживает USING в DELETE. Я думаю, что вы хотите:

DELETE c
    FROM `comment` c JOIN
         t t1
         ON t1.id = c.id JOIN
         t t2
         ON t2.hash = t1.hash AND t2.id < t1.id;

Я подозреваю, что есть более простые способы выразить эту логику. Возможно, вам следует задать еще один вопрос с примерами данных, желаемыми результатами и объяснением логики, которую вы реализуете.

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