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 server 上查找重复数据

所以查询可以区分它是否真的重复。

谢谢

对不起,我的前辈只是在和我开玩笑,他刚刚显示的数据在链接服务器上,并且服务器是真的很敏感请标记这个问题是关闭的。

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 回答