0

私はテーブルを持っています

id:name:passportnumber:score
1:xxx:123456:99
2:yyy:789012:88
3:xxx:123456:11
4:xxx:123456:44
5:xxx:123456:66
6:xxx:123456:77

重複している古い行を削除し、同じパスポート番号を持つ最新の行のみを保持したい

id:name:passportnumber:score    
2:yyy:789012:88
6:xxx:123456:77

一時テーブルなしで最善の方法は何ですか

ありがとう

4

2 に答える 2

6

テーブルへの自己結合を実行して、削除を実行できるはずです。

delete t1
from yt t1
inner join yt t2
  on t1.passportnumber = t2.passportnumber
where t1.id < t2.id;

デモで SQL Fiddle を参照してください

于 2013-04-30T18:01:48.060 に答える
1

LEFT JOINあなたにはそれDELETEができます。

DELETE Table1 FROM Table1
LEFT JOIN Table1 b
  ON Table1.id<b.id 
 AND Table1.passportnumber=b.passportnumber
WHERE b.id IS NOT NULL;

でテストする SQLfiddle

于 2013-04-30T18:02:56.707 に答える