Удалить с помощью выбора в MySQL - PullRequest
5 голосов
/ 09 июня 2011

У меня есть 3 столбца (id, parent, value) с некоторыми данными, и этот запрос:

SELECT * FROM test WHERE id = (
    SELECT parent FROM test WHERE id=2 AND value='value' LIMIT 1
);

Вышеприведенный запрос прекрасно работает.

Теперь, как я могу удалить вместо selectэтот идентификатор в одном запросе?

Ответы [ 2 ]

9 голосов
/ 09 июня 2011

Невозможно удалить из таблицы и выбрать из этой же таблицы в подвыборке.

Однако вы можете использовать эту таблицу в самостоятельном соединении.

DELETE t1 FROM test t1
INNER JOIN test t2 ON (t1.id = t2.parent)
WHERE t2.id = 2 and t2.value = 'value'

Вы не можете использовать limit, а не order by в объединенном операторе удаления.
Это либо объединение, либо лимит / заказ, сделайте свой выбор.

См .: http://dev.mysql.com/doc/refman/5.5/en/delete.html

4 голосов
/ 09 июня 2011
DELETE FROM test WHERE id = ( select * from (
    SELECT parent FROM test WHERE id=2 AND value='value' LIMIT 1 ) as t
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...