我需要在SQL Server的表中查找具有重複訂單號的行。在SQL Server中查找包含重複條目的行
例如SELECT *顯示:
No
-----
5001
5002
5003
5003
5003
5004
5005
5006
5006
我想
No
------
5003
5003
5003
5006
5006
是否可以編寫一個查詢來做到這一點?
我需要在SQL Server的表中查找具有重複訂單號的行。在SQL Server中查找包含重複條目的行
例如SELECT *顯示:
No
-----
5001
5002
5003
5003
5003
5004
5005
5006
5006
我想
No
------
5003
5003
5003
5006
5006
是否可以編寫一個查詢來做到這一點?
雖然這個問題被回答了SO萬次,使用GROUP BY
+ HAVING
:
SELECT No
FROM dbo.tablename
Group By No
Having Count(*) > 1
SELECT S.No
FROM [dbo].[Shows] S
INNER JOIN (
SELECT [No]
FROM [dbo].[Shows]
GROUP BY [No]
HAVING COUNT(*) > 1
) J
ON S.No = J.No
但我無法想象爲什麼你想要這個數據子集:) –
您可以使用COUNT() OVER()
得到每No
的行數,並在外部查詢,過濾掉所有非重複行:
SELECT [No]
FROM (
SELECT [No], COUNT(*) OVER (PARTITION BY [No]) AS cnt
FROM mytable) t
WHERE cnt > 1
你有沒有在你的研究中發現任何關於重複的東西? –
[Select select statement to find duplicates on certain fields](http://stackoverflow.com/questions/4434118/select-statement-to-find-duplicates-on-certain-fields) – Kritner
@TimSchmelter爲什麼你的答案消失? – Jack