多表DELETE LIMIT

时间:2012-09-28 09:23:14

标签: mysql sql sql-delete

我正在尝试运行以下查询,但它会抛出错误。

DELETE b 
FROM parim_lang a 
JOIN parim_lang b 
    ON b.lang_hash = a.lang_hash 
    AND b.lang_language = SUBSTRING(a.lang_google_translation, LOCATE('-', a.lang_google_translation) + 1)
WHERE a.lang_google_translation REGEXP '^[a-z]+-[a-z]+'
LIMIT 20

无限制此查询有效..

错误如下所示:

  

SQL错误(1064):您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第7行的“LIMIT 20”附近使用正确的语法

发现这个:

  

对于多表语法,DELETE从每个tbl_name中删除满足条件的行。在这种情况下,不能使用ORDER BY和LIMIT。

我有解决方法吗?

1 个答案:

答案 0 :(得分:2)

尝试:

DELETE
FROM parim_lang a
WHERE a.lang_hash IN (
SELECT a.lang_hash 
FROM parim_lang a
JOIN parim_lang b 
    ON b.lang_hash = a.lang_hash 
    AND b.lang_language = SUBSTRING(a.lang_google_translation, LOCATE('-', a.lang_google_translation) + 1)
WHERE a.lang_google_translation REGEXP '^[a-z]+-[a-z]+' ) LIMIT 20