2017-05-16 33 views
-1

我有这个表:如何列出具有相同两列的表中的重复行?

CREATE TABLE [dbo].[Phrase] (
    [PhraseId]    UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, 
    [English]    NVARCHAR (250) NOT NULL, 
    [Kanji]     NVARCHAR (250) NULL, 
    PRIMARY KEY CLUSTERED ([PhraseId] ASC)); 

我想这样做是为了让所有的重复行的列表(英文和汉字)用于检测重复列。

换句话说,如果有行这样的:

English Kanji 

aa  bb 
aa  cc 
aa  bb 
aa  dd 
aa  ee 
aa  dd 

我想获得展示

aa  bb 
aa  dd 
+0

[在一个SQL表查找重复的值]的可能的复制(http://stackoverflow.com/questions/2594829/finding-duplicate-values-in-a-sql-table) –

+1

这个问题已经回答了很多次。你已经问过它:http://stackoverflow.com/questions/44001073/how-can-i-list-duplicate-values-out-of-a-table –

回答

2

试试这个报告:

select English,Kanji from Phrase 
group by English,Kanji 
having count(*)>1 
+3

很好的答案,虽然GROUP BY必须在HAVING之前 – Eli

0

使用ROW_NUMBER()我们可以做到

;WITH CTE(English,Kanji) 
as 
(
select 'aa','bb' UNION ALL 
select 'aa','cc' UNION ALL 
select 'aa','bb' UNION ALL 
select 'aa','dd' UNION ALL 
select 'aa','ee' UNION ALL 
select 'aa','dd' 
) 
SELECT English 
    ,Kanji 
FROM (
    SELECT * 
     ,ROW_NUMBER() OVER (
      PARTITION BY English 
      ,Kanji ORDER BY English 
       ,Kanji 
      ) AS Seq 
    FROM CTE 
    ) dt 
WHERE dt.Seq <> 1 

输出

English Kanji 
------------- 
aa  bb 
aa  dd 
相关问题