0

次のクエリは、オラクルで重複する行を削除するためにうまく機能しませんか?

SQL> delete from sessions o 
      where 1<=(select count(*) 
                  from sessions i 
                 where i.id!=o.id 
                   and o.data=i.data);

重複行をすべて削除するようです!! (1はタフにしたい)

4

1 に答える 1

2

テーブルに少なくとも 1 つの行があり、2 つIDの異なる が に対して同じ値を共有しているため、ステートメントは機能しませんDATA

あなたの意図DATA IDはbyの異なる値を探すことかもしれませんがID、SQL が言ってDATAいることは実際にはセットベースです: 「私のテーブル全体を見てください。IDが異なる場合 (つまり、内部COUNT(*)が 0 より大きい場合)、DELETEテーブル内のすべての行が異なります。」

特定の行ベースのロジックを試みている可能性がありますが、ステートメントは全体像 (セットベース) です。たとえば、Ollie がリンクしているソリューションにあるように、重複する行を特定するものは何もありません。

于 2012-07-30T15:56:45.653 に答える