0

私のテーブルは次のようになります。

id      name        value       date
1       John        25      2013-03-23 16:42:35
2       John        25      2013-03-23 13:52:24
3       John        26      2013-03-22 03:12:43
4       Gabriel     18      2013-03-23 10:21:07
5       Rick        32      2013-03-21 04:37:29

name同じ日付のタイムスタンプと同じ行を削除するにはどうすればよいdateですか? たとえば、上の表は次のようになります。

id      name        value       date
1       John        25      2013-03-23 16:42:35
3       John        26      2013-03-22 03:12:43
4       Gabriel     18      2013-03-23 10:21:07
5       Rick        32      2013-03-21 04:37:29
4

1 に答える 1

1

それを行うには多くの方法があります。1 つは、毎日 1 つの名前のレコードを取得するサブクエリを使用し、サブクエリの結果をテーブルに結合する方法です。一致しない行はフィルタリングされ、削除されます。

DELETE  a
FROM    tableName a
        LEFT JOIN
        (
            SELECT  name, date(date) dateOnly, MIN(ID) min_ID
            FROM    tableName
            GROUP   BY name, date(date)
        ) b ON  a.name = b.name AND
                Date(a.date) = b.dateonly AND
                a.ID = b.min_ID
WHERE   b.name IS NULL
于 2013-03-24T14:29:38.723 に答える