使用join和limit删除mysql

时间:2013-02-26 21:07:40

标签: mysql sql join limit

我有这样的sql-query:

DELETE `LINK_LA_TYP`
FROM
    `LINK_LA_TYP`
JOIN `LINK_ART` ON `LINK_LA_TYP`.LAT_LA_ID = `LINK_ART`.LA_ID
JOIN `ARTICLES` ON `LINK_ART`.LA_ART_ID = `ARTICLES`.ART_ID
WHERE
    (
        `ARTICLES`.ART_SUP_ID IN(
            10008,
            10439,
            11005,
             ...
             ...
            441
        )
    )
LIMIT 50000;

但我得到错误....从mysql-doc我得到了删除+加入+限制我会得到错误....

但我怎样才能更改我的代码? (全新的mysql和sql)。如何更改我的代码?限制要删除的行....

另外在phpmyadmin我得到了

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   在第1行'极限50'附近

1 个答案:

答案 0 :(得分:2)

从文档中对于多表语法,DELETE从每个tbl_name中删除满足条件的行。在这种情况下,不能使用ORDER BY和LIMIT。 dev.mysql.com/doc/refman/5.0/en/delete.html - Michael Berkowski 2分钟前

我同意这一点。另外, DELETE命令不能具有LIMIT子句。另外,一般来说,您无法从多个JOINed表中删除。

可能可以使用以下类似的子选项重写语句:

delete from LINK_LA_TYP
where LAT_LA_ID in 
    (select LA_ID
    from LINK_ART
    join ARTICLES on ARTICLES.ART_ID = LINK_ART.LA_ART_ID
    where ARTICLES.ART_SUP_ID in (...));