0


データベースにテーブル (Final)があり、NULL 値を持つ行を除くすべての重複行を削除したいと考えています。
私は上記を試しました:

 DELETE FROM Final 
  WHERE event_id NOT IN (SELECT MIN(event_id) AS MinID 
                           FROM (SELECT * FROM Final) as x 
                          GROUP BY event_name
                            AND event_name IS NOT NULL)

しかし、うまくいきませんでした。

編集

私のテーブルは次のようです:

ID | サンゴ
1 | ヌル
2 | 1
3 | 1 <- 削除
4 | 2
5 | NULL <- そのまま
6 | 1 <-削除

4

2 に答える 2

1

AND event_name IS NOT NULLその部分をメインのサブクエリに移動するだけです:

DELETE FROM Final 
  WHERE event_id NOT IN (SELECT MIN(event_id) AS MinID 
                           FROM (SELECT * FROM Final) as x 
                          GROUP BY event_name)
    AND event_name IS NOT NULL
于 2013-03-29T19:11:04.063 に答える
1

テーブルに参加するのはどうですか?

DELETE  a
FROM    Final a
        LEFT JOIN
        (
            SELECT  Event_name, MIN(Event_ID) MIN_ID
            FROM    Final
            WHERE   Event_name IS NOT NULL
            GROUP   BY Event_name
        ) b ON a.Event_name = b.Event_name AND
                a.Event_ID = b.MIN_ID
WHERE   a.Event_name IS NOT NULL AND 
        b.Event_name IS NULL
于 2013-03-27T14:20:58.297 に答える