0

I have such 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;

But i get error.... From mysql-doc i get that with delete+join+limit i will get errors....

But how can i change my code? (new to mysql and sql in all). How to change my code? To limit rows to delete....

Also in phpmyadmin i get

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit 50' at line 1

4

1 に答える 1

2

ドキュメントから複数テーブルの構文の場合、DELETEは各tbl_nameから条件を満たす行を削除します。この場合、ORDERBYとLIMITは使用できません。dev.mysql.com/doc/refman/5.0/en/delete.html – MichaelBerkowski2分前

私はこれに同意します。さらに、DELETEコマンドにLIMIT句を含めることはできません。また、一般的に、複数のJOINされたテーブルから削除することはできません。

次のような副選択を使用してステートメントを書き直すことができる場合があります。

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 に答える