我想使用transact-sql获取表中的所有重复元素。
我知道如何获取不同的元素,但需要获取所有重复的元素。 我正在Ubuntu 18.04中使用SQL Server 2017 Express Edition
SELECT DISTINCT myField FROM myDb.dbo.myTable
这使我获得了与众不同的元素,但没有获得重复的元素。 例如我有此数据:
我想得到这样的东西:
请帮忙。
答案 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;
如果这不是您想要的,请提供一些示例数据以及您期望的输出。