1

次のクエリを実行しようとしていますが、エラーがスローされます。

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 構文にエラーがあります。7行目の「LIMIT 20」付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

これを見つけました:

複数テーブル構文の場合、DELETE は各 tbl_name から条件を満たす行を削除します。この場合、ORDER BY と LIMIT は使用できません。

これに対する回避策はありますか?

4

1 に答える 1

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
于 2012-09-28T09:27:42.250 に答える