0

我有这样的sql查询:

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中我得到了delete+join+limit我会得到错误....

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

同样在 phpmyadmin 我得到

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“限制 50”附近使用正确的语法

4

1 回答 1

2

从 docs 对于多表语法,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 (...));
于 2013-02-26T21:32:42.163 回答