我有这样的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'附近
答案 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 (...));