首页 > 解决方案 > 为什么这个复杂的删除 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 服务器版本相对应的手册,以在第 2 行的“AS MC_PS INNER JOIN MarketDetails_CommodityDetails AS MD_CD ON MC_PS.mar”附近使用正确的语法

我怎样才能解决这个问题?也许将其用作子查询:

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

(使用身份证)

但如何?

标签: mysqlsqldatabaserdbms

解决方案


您要删除 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

推荐阅读