проблемы с удалением записей из таблицы при участии ее в подзапорсе

antonim

Новичок
проблемы с удалением записей из таблицы при участии ее в подзапорсе

проблемы с удалением записей из таблицы при участии ее в подзапорсе

вот собственно примитивный пример моей проблемы:

DELETE
FROM `testdelete` T1
WHERE T1.id in (
SELECT T2.id
FROM `testdelete` T2
WHERE T2.id IN (1,2,3)
)

проблема в том, что второй раз использую одну таблицу.
Первое и дурацкое решение было таким:

SELECT CONCAT('DELETE FROM testdelete WHERE id IN (', T2.id, ')')
FROM `testdelete` T2
WHERE T2.id IN (2,3)

Но результаты запроса не запускаются сами по себе... :( а пользоваться php не хочу, хочу все красиво сделать одним запросом.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
antonim
повальное увлечение "решить в один запрос" к хорошему не приводит. Мускуль не дает просто так удалить данные с таблицы, к которой идет подзапрос.

Можешь попробовать запихать кусок idшников из testdelete в временную табличку, потом собственно удалить данные из testdelete, выбирая их idшники из временной.
 

Splurov

Новичок
Приведи реальный пример?
В этом примере пойдёт
Код:
DELETE FROM testdelete WHERE id IN(1,2,3)
или
Код:
DELETE t1 FROM test t1 JOIN test t2 ON(t1.id = t2.id) WHERE t2.id IN(1,2,3)
 

antonim

Новичок
прошу прощенья за тормознутость (давно не работал с БД)

вот решение кому интересно:

DELETE FROM testdelete
WHERE testdelete.id IN
( SELECT testint.tiny
FROM testint
WHERE testint.tiny = testdelete.id);
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Splurov
какой тебе реальный пример привести?

-~{}~ 19.04.10 16:36:

И где тут та же таблица в подзапросе, я так и не увидел, селект с другой таблицы вообще)
 

antonim

Новичок
Автор оригинала: c0dex
Splurov
какой тебе реальный пример привести?

-~{}~ 19.04.10 16:36:

И где тут та же таблица в подзапросе, я так и не увидел, селект с другой таблицы вообще)
Та вот я притупил, забыл что можно в подзапросе использовать в условии родительскую таблицу.
 
Сверху