Я получаю сообщение об ошибке при попытке выполнить этот запрос, так как MySQL понимает, что я пытаюсь удалить некоторые записи по набору результатов, который поступает из JOIN on той же таблицы.MySQL: удалить из результата предыдущего запроса, используя ту же таблицу
Как я могу переписать запрос?
DELETE FROM hr_descr2
WHERE
id IN (SELECT
a.id
FROM
hr_descr2 a,
hyperreview_descr b
WHERE
a.titolo = b.titolo
AND a.recensione != b.recensione
AND a.recensione != ''
AND b.recensione != ''
AND ABS(LENGTH(a.recensione) - LENGTH(b.recensione)) > 40);
Я также попытался переписать запрос таким образом, но это не работает:
WITH temp AS(SELECT
a.id
FROM
hr_descr2 a,
hyperreview_descr b
WHERE
a.titolo = b.titolo
AND a.recensione != b.recensione
AND a.recensione != ''
AND b.recensione != ''
AND ABS(LENGTH(a.recensione) - LENGTH(b.recensione)) > 40)
DELETE FROM hr_descr2
WHERE
id IN (select id from temp);
Да, он поддерживает их .. и КТР имя специфичны для Microsoft, а также Oracle поддерживает их, но они называют их на другое имя. – Revious
@ Какая версия mysql вы используете? – Dan
5 если я не ошибаюсь .. но CTE работает только с выборами в mysql Я думаю, – Revious