2016-06-24 8 views
0

私はGoogleで解決できない問題があります。私は行番号とパラメータを持つテーブルを持っています。私は別のグループをグループ化して重複行を削除

DELETE n1 FROM a n1,a n2 WHERE n1.parameter = n2.parameter AND n1.id > n2.id AND n1.id <> n2.id

を試してみました。しかし、これはそう重複パラメータですべての行を削除します

Number Parameter id 
3   22   1 
2   32   3 
1   44   4 
2   12   5 
4   22   6 
2   36   9 

Number Parameter id 
3   22   1 
3   22   2 
2   32   3 
1   44   4 
2   12   5 
4   22   6 
1   44   7 
2   12   8 
2   36   9 

:今、私は、各番号に同じパラメータで重複行を削除したいですそれぞれのうちの1つだけが保持されています。私は何とかGroup by Numberを追加する必要があります。私は思うが、私は方法を知らない。

EDIT:ああ、ID行を追加していません。もちろん、すべての行にID行がありますので、今すぐ追加します。

EDIT2:10086からの回答が機能しました!以下

+0

重複した行がまったく同じである限り、1つの列でも異なる値がない場合は、削除することは不可能です。代わりに、別のものを使用してみませんか?テーブルから別個の番号、パラメータを選択する。 –

+0

andre_northwind saisと同じように、行の1つを削除することは不可能です。少なくとも1つの余分な列が必要です。テーブルのスキーマを変更できますか? – lvoros

答えて

0

てみてください。)これは最小のID値を持つ行残る

DELETE t1 
FROM a t1 
INNER JOIN a t2 
ON t1.id > t2.id 
AND t1.Parameter = t2.Parameter 
AND t1.Number = t2.Number; 

SQLFiddle DEMO HERE

+0

編集:あなたの投稿を編集しました。もう一度試してみましょう。 – Baldry

+0

@Baldry更新されました。もう一度やり直してください。 SQLFiddleのデモを確認してください。 – Blank

+0

チャームのように働いてくれてありがとうございます!私はもっ​​と確かめるためにデータを調べなければならないだろうが、それは正しいようだ。 – Baldry

関連する問題