0

データベース内の重複データを見つけたい

私のクエリはこのようなものです

SELECT  ID, FK1,FK2,FK3 , COUNT( * ) as duplicate   
FROM Pilkada.dbo.Transaction    
Group by ID, FK1,FK2,FK3    
having COUNT(*) >1

データはこのように返されます

1

しかし、データが重複しているクエリを選択すると、結果:

2

問題は、大文字と小文字を区別してSQLサーバーで重複データを見つける方法です。

そのため、クエリは実際に重複しているかどうかを区別できます。

ありがとうございました

申し訳ありませんが、先輩が私をだまして、彼が示したデータはリンクサーバー上にあり、サーバーは注意が必要です。この質問は近いとマークしてください。

4

1 に答える 1

3

照合を使用します。以下の例では、ポーランド語の照合を使用しましたが、別の照合を使用することもできます。

CI = 大文字と小文字を区別しない、AI = アクセントを区別しない、CS = 大文字と小文字を区別する、AS = アクセントを区別する

SELECT
    ID,
    FK1 COLLATE Polish_CI_AI,
    FK2 COLLATE Polish_CI_AI,
    FK3 COLLATE Polish_CI_AI,
    COUNT(*) as duplicate
FROM Pilkada.dbo.Transaction    
GROUP BY
    ID,
    FK1 COLLATE Polish_CI_AI,
    FK2 COLLATE Polish_CI_AI,
    FK3 COLLATE Polish_CI_AI 
HAVING COUNT(*) >1

例の並べ替え

CREATE TABLE #t (
    k1 varchar(10)
)

INSERT INTO #t VALUES ('Mars')
INSERT INTO #t VALUES ('mars')
INSERT INTO #t VALUES ('maRs')
INSERT INTO #t VALUES ('MARS')

SELECT *
FROM #t
WHERE k1 = 'mars'

SELECT k1 COLLATE Polish_CS_AS , COUNT(*)
FROM #t
GROUP BY
    k1 COLLATE Polish_CS_AS

SELECT k1 COLLATE Polish_CI_AS , COUNT(*)
FROM #t
GROUP BY
    k1 COLLATE Polish_CI_AS

DROP TABLE #t
于 2013-05-28T07:34:29.300 に答える