我想使用SQL判断一段数据是否多次出现在表中的特定列中.以下是我目前掌握的SQL代码:

select * from AXDelNotesNoTracking where count(salesid) > 1

salesid是我想查看的专栏,任何帮助都将不胜感激,谢谢.

推荐答案

应该是:

SELECT SalesID, COUNT(*)
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1

关于您最初的询问:

  1. 无法执行SELECT*操作,因为此操作需要GROUP BY
  2. 由于这是一个GROUP BY操作,HAVING子句将对其进行筛选

编辑:

我刚刚想到了这一点,如果您想多次查看其中的项目(但这取决于您使用的数据库):

;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

Sql相关问答推荐

如何在PostgreSQL中同时为id s列表执行多个update语句?'

使用SQL旋转表的列(Snowflake)

如何使用ROW_NUM() Select 一个没有第二条记录的实例?

替换条件中的单元格值

在Oracle SQL中将列值转换为行

了解放置时的连接

在SQL中转换差异表的多列

存储过程太慢

Postgresql - WHERE 中的 MAX 标准 - 初学者问题

仅当 SQL Server 中的表为开时,才在存储过程中使用更改跟踪

SQL 搜索 - 获取最大值日期的奇怪行为

获取多个开始-结束时间戳集之间经过的时间

SQL Server - 判断 ids 层次 struct 中的整数 (id)

在Snowflake中,如何将以逗号和连字符分隔的多个混合数值拆分成数字列表

标量子查询中的窗口函数不起作用

带聚合函数的 percentile_cont

使用 R 遍历 SQL 查询,每次替换一个变量

如何在 RavenDB Studio (RQL) 中插入更新文档

在时态表和非时态表之间使用 EXCEPT 的 SQL 子查询给出表达式错误数

如何刷新在视图之上创建的表