在sqlserver表中获取重复元素

时间:2019-05-10 02:46:57

标签: tsql

我想使用transact-sql获取表中的所有重复元素。

我知道如何获取不同的元素,但需要获取所有重复的元素。 我正在Ubuntu 18.04中使用SQL Server 2017 Express Edition

SELECT DISTINCT myField FROM myDb.dbo.myTable

这使我获得了与众不同的元素,但没有获得重复的元素。 例如我有此数据: enter image description here

我想得到这样的东西:

enter image description here

请帮忙。

1 个答案:

答案 0 :(得分:2)

这将使您获得myField中的值多次出现的行的所有列。

IF OBJECT_ID('tempdb.dbo.#myTable', 'U') IS NOT NULL
    DROP TABLE #myTable;

CREATE TABLE #myTable
(
    Id INT
  , myField INT
  , Date DATE
);

INSERT INTO #myTable (Id, myField, Date) VALUES (1, 1, '2019-05-10');
INSERT INTO #myTable (Id, myField, Date) VALUES (2, 2, '2019-05-10');
INSERT INTO #myTable (Id, myField, Date) VALUES (3, 1, '2019-05-10');
INSERT INTO #myTable (Id, myField, Date) VALUES (4, 3, '2019-05-10');
INSERT INTO #myTable (Id, myField, Date) VALUES (5, 2, '2019-05-10');
INSERT INTO #myTable (Id, myField, Date) VALUES (6, 4, '2019-05-10');

SELECT * FROM #myTable ORDER BY Id;

SELECT     a.*
FROM       #myTable AS a
INNER JOIN (
               SELECT   myField
                      , COUNT(*) AS 'Count'
               FROM     #myTable
               GROUP BY myField
               HAVING   COUNT(*) > 1
           )        AS b ON a.myField = b.myField
ORDER BY   a.myField;

如果这不是您想要的,请提供一些示例数据以及您期望的输出。