我想檢查一條數據是否在我的表中的特定列中使用SQL出現多次。這裏是我到目前爲止我的SQL代碼:查看某個項目是否在數據庫列中多次出現
select * from AXDelNotesNoTracking where count(salesid) > 1
salesid
是我希望檢查之列,任何幫助,將不勝感激,謝謝。
我想檢查一條數據是否在我的表中的特定列中使用SQL出現多次。這裏是我到目前爲止我的SQL代碼:查看某個項目是否在數據庫列中多次出現
select * from AXDelNotesNoTracking where count(salesid) > 1
salesid
是我希望檢查之列,任何幫助,將不勝感激,謝謝。
它應該是:
SELECT SalesID, COUNT(*)
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
關於你的初始查詢:
編輯:
而且我只要一想到這一點,如果你想看到哪些項目是在有一次以上(但是這取決於您所使用的數據庫):
;WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY SalesID ORDER BY SalesID) AS [Num]
FROM AXDelNotesNoTracking
)
SELECT *
FROM cte
WHERE cte.Num > 1
當然,這隻顯示出現了相同SalesID的行,但沒有顯示多次出現的初始SalesID值。這意味着,如果SalesID顯示3次,則此查詢將顯示實例2和3,但不顯示第一個實例。不過,這可能會有所幫助,具體取決於您尋找多個SalesID值的原因。
EDIT2:
下面的查詢被張貼下面APC,是優於CTE我上面提到的,因爲它顯示了其中SalesID已經出現不止一次的所有行。爲了完整性,我在這裏包括它。我只是添加了一個ORDER BY來保持SalesID值分組在一起。 ORDER BY可能也有助於上面的CTE。
SELECT *
FROM AXDelNotesNoTracking
WHERE SalesID IN
( SELECT SalesID
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
)
ORDER BY SalesID
試試這個:
select salesid,count (salesid) from AXDelNotesNoTracking group by salesid having count (salesid) >1
-1這是缺少HAVING子句以僅標識出現多次的記錄,如原始問題所要求的那樣。 – 2012-03-16 12:23:17
他沒有提到他只想查看1條以上的記錄,只能查看它們 – 2012-03-16 12:24:26
問題指出:「我想檢查一段數據是否在特定列中出現一次以上」。如果沒有HAVING子句,您將返回所有值,並且如果該表很大,則很難找到多次出現的值。 – 2012-03-16 12:26:41
如何:
select salesid from AXDelNotesNoTracking group by salesid having count(*) > 1;
什麼各種SQL的? MySQL的? Microsoft SQL Server?甲骨文?訪問? etc – UnhandledExcepSean 2012-03-16 12:11:13