0

私は MySQL を初めて使用し、SQL ステートメントの変換に問題があり、可能であれば助けを求めています。

最後に、最終ログイン日に基づいて 1 つのテーブルからアイテムを削除できるようにする必要があります。残念ながら、テーブルの設計を制御できず (これには欠陥があります)、characterID を characterUID および LastLogin 日付と比較する必要があります。 charcaterID (一意ではない) によってのみオブジェクトを追跡する別のテーブルからアイテムを削除します。

これが私がこれまでに持っているものです

DELETE FROM object_data WHERE CharacterID IN (
    SELECT CharacterID FROM object_data 
    WHERE CharacterID IN (
        SELECT CharacterID FROM character_data
            WHERE LastLogin < DATE_SUB(NOW(), INTERVAL 30 DAY)
            AND PlayerUID NOT IN (
                SELECT PlayerUID FROM character_data 
                    WHERE LastLogin > DATE_SUB(NOW(), INTERVAL 30 DAY))))

表示されるエラーは 1093 です。FROM 句で update からターゲット テーブル 'object_date' を指定することはできません。

何か案は?

4

2 に答える 2

0

今試してみて:

DELETE FROM object_data WHERE CharacterID IN (
    SELECT CharacterID FROM  (
        SELECT CharacterID FROM character_data
            WHERE LastLogin < DATE_SUB(NOW(), INTERVAL 30 DAY)
            AND PlayerUID NOT IN (
                SELECT PlayerUID FROM character_data 
                    WHERE LastLogin > DATE_SUB(NOW(), INTERVAL 30 DAY)))y)
于 2013-11-01T23:35:44.407 に答える