Почему этот сложный SQL-запрос на удаление не работает?

Я пытаюсь реализовать «сложный» SQL-запрос на удаление, но он не работает.

Это мой запрос:

DELETE
FROM Market_Commodity_Price_Series     AS MC_PS
INNER JOIN MarketDetails_CommodityDetails AS MD_CD
      ON MC_PS.market_commodity_details_id = MD_CD.id 
INNER JOIN MarketDetails                     AS MD
      ON  MD_CD.market_details_id = MD.id  
WHERE
      MD.localization_id = 1

Я хочу удалить все строки только из Market_Commodity_Price_Series, но с этим условием WHERE. Как видите, условие where использует операцию JOIN.

Проблема в том, что при выполнении этого запроса я получаю это сообщение об ошибке:

#42000У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «AS MC_PS INNER JOIN MarketDetails_CommodityDetails AS MD_CD ON MC_PS.mar» в строке 2.

Как я могу это исправить? Возможно, используя это как подзапрос:

SELECT MC_PS.id
FROM Market_Commodity_Price_Series     AS MC_PS
INNER JOIN MarketDetails_CommodityDetails AS MD_CD
      ON MC_PS.market_commodity_details_id = MD_CD.id 
INNER JOIN MarketDetails                     AS MD
      ON  MD_CD.market_details_id = MD.id  
WHERE
      MD.localization_id = 1

(используя идентификатор)

но как?


person AndreaNobili    schedule 28.05.2018    source источник


Ответы (1)


Вы хотите удалить MC_PS, поэтому напишите его после удаления «MC_PS», который отсутствует.

DELETE MC_PS
FROM Market_Commodity_Price_Series     AS MC_PS
INNER JOIN MarketDetails_CommodityDetails AS MD_CD
      ON MC_PS.market_commodity_details_id = MD_CD.id 
INNER JOIN MarketDetails                     AS MD
      ON  MD_CD.market_details_id = MD.id  
WHERE
      MD.localization_id = 1
person Rajat Jaiswal    schedule 28.05.2018