【发布时间】:2013-02-26 21:07:40
【问题描述】:
我有这样的 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”
【问题讨论】:
-
您的查询太长而无法阅读(和调试)。删除不相关的数据并向我们展示查询的基本结构。无论如何,您不应该将那么多数据硬编码到查询中。
-
来自文档 对于多表语法,DELETE 从每个 tbl_name 中删除满足条件的行。在这种情况下,不能使用 ORDER BY 和 LIMIT。 dev.mysql.com/doc/refman/5.0/en/delete.html
-
@MichaelBerkowski 我知道!给出如何解决的代码)
-
@Asad 它已经被编辑了......但是这个硬编码不是硬编码,这一切都很好......和其他方式没有
-
@brabertaser1992 你使用 LIMIT 的原因是什么?您没有
ORDER BY,因此您的结果可能完全不可靠。