Mysql выдает ошибку

0
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable where roll=1)

У меня есть таблица mytable. Мой предыдущий запрос вызывает ошибку.

Вы не можете указать целевую таблицу "mytable" для обновления в предложении FROM

Теги:
mysql-error-1093

6 ответов

3
Лучший ответ

Из документации MySQL:

В настоящее время вы не можете удалить из таблицы и выбрать из той же таблицы в подзапросе.

К счастью, вам не нужен подзапрос. Просто выполните:

DELETE FROM mytable WHERE roll=1

Это намного короче и яснее для загрузки.

1

Почему бы вам просто не сделать это?

DELETE FROM mytable WHERE roll=1
0

Почему бы просто:

DELETE FROM mytable WHERE roll=1
0

Этот поток объясняет, почему вы не можете этого сделать.

И в этом примере вы можете просто использовать:

DELETE FROM mytable WHERE roll=1
0

Почему вы используете подзапрос? Вы можете написать так:

DELETE FROM mytable WHERE where roll=1;
0

Почему бы вам просто не написать

DELETE FROM mytable WHERE roll=1

? Ошибка возникает из-за того, что MySql не хочет, чтобы он получал форму таблицы в подзапросе, когда главный запрос изменяет одну и ту же таблицу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню