sql >> データベース >  >> RDS >> Mysql

順序と制限を使用して複数のテーブルから削除する

    副選択に対してJOINを使用して実行し、my_rel_tableから最高のIDを取得します

    DELETE my_rel_table, my_photo_table
    FROM my_rel_table 
    INNER JOIN 
    (
        SELECT MAX(id) AS MaxId
        FROM my_rel_table 
        WHERE relid = 1 
        AND type = 1
    ) Sub1
    ON my_rel_table.id = Sub1.MaxId
    LEFT OUTER JOIN my_photo_table ON my_photo_table.typeid = my_rel_table.typeid
    WHERE my_rel_table.relid = 1 
    AND my_rel_table.type = 1
    

    テストデータがないため、直接テストしていません!

    編集-トップ5を実行するためのいくつかの試みが、再びテストされていません

    DELETE my_rel_table, my_photo_table
    FROM my_rel_table 
    INNER JOIN 
    (
        SELECT id
        FROM my_rel_table 
        WHERE relid = 1 
        AND type = 1
        ORDER BY id DESC
        LIMIT 5
    ) Sub1
    ON my_rel_table.id = Sub1.id
    LEFT OUTER JOIN my_photo_table ON my_photo_table.typeid = my_rel_table.typeid
    WHERE my_rel_table.relid = 1 
    AND my_rel_table.type = 1
    

    または別の方法。

    DELETE my_rel_table, my_photo_table
    FROM my_rel_table 
    INNER JOIN 
    (
        SELECT id, @Counter:[email protected]+1 AS ItemCounter
        FROM my_rel_table 
        CROSS JOIN (SELECT @Counter:=0) Sub1
        WHERE relid = 1 
        AND type = 1
        ORDER BY id DESC
    ) Sub1
    ON my_rel_table.id = Sub1.id
    AND Sub1.ItemCounter <= 5
    LEFT OUTER JOIN my_photo_table ON my_photo_table.typeid = my_rel_table.typeid
    WHERE my_rel_table.relid = 1 
    AND my_rel_table.type = 1
    



    1. 整数を16進数に、16進数を整数に変換

    2. SQLでテーブルと列を削除する方法

    3. JPA/HibernateはOrderというエンティティを作成できません

    4. ライセンスシステムの作成