【问题标题】:How can I list duplicate values out of a table? [duplicate]如何从表中列出重复值? [复制]
【发布时间】:2017-10-15 12:18:00
【问题描述】:

我有这张桌子。某些行在 Kanji 列中有重复值。

如何在这些行中显示相同汉字多次出现的位置?

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

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您可以通过该列使用GROUP BY 语句并指定该组的COUNT(*) 大于1 的约束,因此:

    SELECT [kanji]
    FROM [dbo].[Phrase]
    GROUP BY [kanji]
    HAVING COUNT(*) > 1

    【讨论】:

      【解决方案2】:

      group by with having 会得到哪些单词是重复的:

      SELECT Kanji FROM Phrase
      GROUP BY Kanji
      HAVING COUNT(*)>1
      

      【讨论】:

        【解决方案3】:

        从 MyTable 中选择汉字
        按汉字分组
        计数(*) > 1

        我建议在您想要的列上设置全文索引...

        【讨论】:

          【解决方案4】:
          ;with cteDuplicates
          AS(
              SELECT *
                  ,ROW_NUMBER()OVER (PARTITION BY Kanji ORDER BY Kanji) 'Dup'
              FROM dbo.Phrase
          )
          SELECT * FROM cteDuplicates D
          WHERE D.Dup > 1
          

          【讨论】:

          • 感谢您提供此代码 sn-p,它可能会提供一些即时帮助。一个正确的解释would greatly improve 它的教育价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有类似但不相同的问题的读者更有用。请edit您的答案添加解释,并说明适用的限制和假设。
          【解决方案5】:
          SELECT COUNT(*) AS `doubles` FROM [table] GROUP BY `Kanji` HAVING `doubles` > 1;
          

          【讨论】:

            【解决方案6】:

            看来他想要重复的行,而不仅仅是重复的。一种方法是在该列中查找重复值,然后 JOIN 回到原始表以查看整行。请参阅下面的查询:

            ; WITH DuplicateKanji AS -- Query for duplicate values
            (
                SELECT 
                    Kanji 
                FROM Phrase
                GROUP BY Kanji
                HAVING COUNT(*)>1
            )
            SELECT -- Query to retrieve rows that were duplicates from above query
                p.*
            FROM DuplicateKanji dk
                INNER JOIN Phrase p
                ON dk.Kanji = p.Kanji
            

            【讨论】:

              猜你喜欢
              • 2012-07-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-03
              • 2020-07-27
              • 1970-01-01
              • 2023-01-18
              相关资源
              最近更新 更多