次のクエリは、オラクルで重複する行を削除するためにうまく機能しませんか?
SQL> delete from sessions o
where 1<=(select count(*)
from sessions i
where i.id!=o.id
and o.data=i.data);
重複行をすべて削除するようです!! (1はタフにしたい)
テーブルに少なくとも 1 つの行があり、2 つIDの異なる が に対して同じ値を共有しているため、ステートメントは機能しませんDATA。
あなたの意図DATA IDはbyの異なる値を探すことかもしれませんがID、SQL が言ってDATAいることは実際にはセットベースです: 「私のテーブル全体を見てください。IDが異なる場合 (つまり、内部COUNT(*)が 0 より大きい場合)、DELETEテーブル内のすべての行が異なります。」
特定の行ベースのロジックを試みている可能性がありますが、ステートメントは全体像 (セットベース) です。たとえば、Ollie がリンクしているソリューションにあるように、重複する行を特定するものは何もありません。