sqlserverクエリで重複データを削除することができます。
1496 ワード
説明:
データテーブルの「列名」のデータが同じであれば、2つの重複したデータ(IDはデータテーブルの主キーとして自動的に増加します)を説明します。
おすすめの使い方一
直接に調べたら、同じものがたくさんありますが、一番大きいのを取りたいです。
使用
以上は個人の経験ですので、参考にしていただければと思います。間違いがあったり、完全に考えていないところがあれば、教えてください。
データテーブルの「列名」のデータが同じであれば、2つの重複したデータ(IDはデータテーブルの主キーとして自動的に増加します)を説明します。
おすすめの使い方一
--
select * from A where not exists(select 1 from where =A. and ID<A.ID)
--
select A.* from A inner join (select min(ID) ID, from group by ) B on A. =B. and A.ID=B.ID
--
select * from A where ID=(select min(ID) from where =A. )
追加:SQL SERVERクエリは、PART TION BYに行きます。
rownumber() over(partition by col1 order by col2)
重い方法に行くのはいいです。ここでメモします。
row_number() OVER ( PARTITION BY COL1 ORDER BY COL2)
COL 1パケットに従って、パケット内部でCOL 2に従って並べ替えられ、この関数で計算された値は、内部並べ替え後の順序番号(グループ内で連続する唯一のもの)を表します。直接に調べたら、同じものがたくさんありますが、一番大きいのを取りたいです。
select fromid,subunstall,kouchu,creatdate,syncdate,relate_key from BoxCount_Froms_Open
使用
PARTITION BY fromid ORDER BY creatdate DESC
の中のfromidグループによって、creatdateグループ内で並べ替えられます。
WHERE RN= 1;
SELECT * FROM (SELECT fromid,subunstall,kouchu,creatdate,syncdate,relate_key,ROW_NUMBER() OVER( PARTITION BY fromid ORDER BY creatdate DESC)RN FROM BoxCount_Froms_Open ) T WHERE RN= 1;
以上は個人の経験ですので、参考にしていただければと思います。間違いがあったり、完全に考えていないところがあれば、教えてください。