1

多くの行を含むテーブルがあります。created_on行は、列であると呼ばれる列の順序で挿入されていることが保証されdatetimeます。特定の行のcreated_on時間が既存の行から5秒以内の場合、その特定の行を削除したいと思います。

これらの行を削除するクエリを作成するにはどうすればよいですか?

4

1 に答える 1

1
SELECT *
FROM TABLE AS A
WHERE EXISTS (
    SELECT *
    FROM TABLE AS B
    WHERE DATE_SUB(A.created_on, INTERVAL 5 SECOND) <= B.created_on
        AND B.created_on < A.created_on
)

これにより、チェーンの最初のイベントを除いて、基本的にすべてのイベント チェーンが 5 秒以内に削除されることを理解しています。

DELETE ではテーブルのエイリアスを作成できないため、次のようにする必要があります。

DELETE
FROM   so902859
WHERE   created_on IN (
        SELECT  created_on
        FROM   so902859 AS A
        WHERE   EXISTS ( SELECT *
                         FROM  so902859 AS B
                         WHERE  DATE_SUB(A.created_on, INTERVAL 5 SECOND) <= B.created_on
                                AND B.created_on < A.created_on ) )

JOIN などを使用してこの猫をスキンする方法は 100 万通りあります。少し長いですが、これが最も明確に理解できると思います。

于 2009-05-24T01:45:52.360 に答える