我想使用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值.
编辑2:
下面的查询是由APC发布的,它比我上面提到的CTE更好,因为它显示了SalesID多次出现的所有行.我把它包括在这里是为了完整性.我只是添加了一个ORDER BY,以将SalesID值分组在一起.订单也可能对上述CTE有所帮助.
SELECT *
FROM AXDelNotesNoTracking
WHERE SalesID IN
( SELECT SalesID
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
)
ORDER BY SalesID