为什么使用INNER JOIN的SQL DELETE查询不起作用?

时间:2018-03-13 14:24:15

标签: mysql sql database sql-delete rdbms

我正在尝试执行此SQL DELETE查询,该查询涉及一些 INNER JOIN 。我只想从名为 Market_Commodity_Price_Series 的主表中删除。我正在使用 MySql

这是我的疑问:

DELETE
FROM Market_Commodity_Price_Series AS MCPS
INNER JOIN MarketDetails_CommodityDetails AS MDCD
      ON MCPS.market_commodity_details_id = MDCD.id
INNER JOIN MarketDetails AS MD
      ON MDCD.market_details_id = MD.id
WHERE MD.market_name = "Kimironko"

问题是执行此查询时我收到以下错误消息:

  

#42000您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近' MCPS INNER JOIN MarketDetails_CommodityDetails AS MDCD ON   MCPS.market_co'在第2行

"奇怪"事情是这个查询的SELECT *版本工作正常,我获得了我期望的记录。

我想使用删除版本仅从 FROM 子句指定的主查询中删除这些记录。

有什么问题?我错过了什么?我该如何解决这个错误?

1 个答案:

答案 0 :(得分:1)

您需要指定要从哪个表中删除记录: (注意DELETE之后的表别名)

DELETE MCPS
FROM Market_Commodity_Price_Series AS MCPS
INNER JOIN MarketDetails_CommodityDetails AS MDCD
      ON MCPS.market_commodity_details_id = MDCD.id
INNER JOIN MarketDetails AS MD
      ON MDCD.market_details_id = MD.id
WHERE MD.market_name = "Kimironko"