Sql server 如何在具有相同两列的表中列出重复行?

Sql server 如何在具有相同两列的表中列出重复行?,sql-server,Sql Server,我有这张桌子: CREATE TABLE [dbo].[Phrase] ( [PhraseId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, [English] NVARCHAR (250) NOT NULL, [Kanji] NVARCHAR (250) NULL, PRIMARY KEY CLUSTERED ([Phras

我有这张桌子:

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
试试这个:

select English,Kanji from Phrase
group by English,Kanji
having count(*)>1
使用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