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

0

Я пытаюсь удалить из таблицы A, где идентификатор существует в Select Inner Join, который включает в себя таблицу A, аналогичную:

Delete from TableA where ID in 
(Select Distinct A.ID from TableA A
Inner Join TableC C
Inner Join TableJ J
Inner Join Table J J2
On J.VendorID=J2.VendordID
and J.Title=J2.Title
and A.C_ID=C.C_ID
and J.ID=A.J_ID
and J2.ID=C.J_ID)

Выбор работает, как я хочу (удивительно), но я продолжаю получать ошибку

1093 - You can't specify target table 'TableA' for update in FROM clause

Я предполагаю, что вы не можете попытаться удалить из таблицы, которая включена в ваш подзапрос. Так или иначе, чтобы реструктурировать это, чтобы я мог?

Показать ещё 1 комментарий
Теги:
inner-join
subquery

1 ответ

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

Вам не нужно использовать подзапрос.

Delete A from TableA A
Inner Join TableC C
Inner Join TableJ J
Inner Join TableJ J2
On J.VendorID = J2.VendordID
and J.Title = J2.Title
and A.C_ID = C.C_ID
and J.ID = A.J_ID
and J2.ID = C.J_ID
  • 0
    Я на самом деле сделал Delete A.* from TableA A1 но это тоже работает.

Ещё вопросы

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