Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查看项目是否在数据库列中出现多次_Sql - Fatal编程技术网

Sql 查看项目是否在数据库列中出现多次

Sql 查看项目是否在数据库列中出现多次,sql,Sql,我想使用SQL检查一段数据是否多次出现在表中的特定列中。以下是我目前拥有的SQL代码: select * from AXDelNotesNoTracking where count(salesid) > 1 salesid是我想查看的专栏,如有任何帮助,将不胜感激,谢谢。应该是: SELECT SalesID, COUNT(*) FROM AXDelNotesNoTracking GROUP BY SalesID HAVING COUNT(*) > 1 关于您的初始查询: 无法执

我想使用SQL检查一段数据是否多次出现在表中的特定列中。以下是我目前拥有的SQL代码:

select * from AXDelNotesNoTracking where count(salesid) > 1
salesid
是我想查看的专栏,如有任何帮助,将不胜感激,谢谢。

应该是:

SELECT SalesID, COUNT(*)
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
关于您的初始查询:

  • 无法执行SELECT*操作,因为此操作需要GROUP BY 和列需要位于GROUP BY或聚合中 函数(即计数、求和、最小值、最大值、平均值等)
  • 由于这是一个GROUPBY操作,HAVING子句将对其进行筛选 而不是在哪里
  • 编辑:

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

    当然,这只显示使用相同SalesID显示的行,但不显示多次出现的初始SalesID值。也就是说,如果SalesID显示3次,那么该查询将显示实例2和3,但不会显示第一个实例。不过,这可能会有所帮助,具体取决于您查找多个SalesID值的原因

    编辑2:

    下面的查询是由下面的APC发布的,它比我上面提到的CTE更好,因为它显示了SalesID多次出现的所有行。我把它包括在这里是为了完整。我只是添加了一个orderby,以将SalesID值分组在一起。订购人也可能有助于上述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
    
    那么:

    select salesid from AXDelNotesNoTracking group by salesid having count(*) > 1;
    
    要进一步扩展,如果您要查找在某个范围内显示的数据(即,不止一次但小于5倍),则可以使用

    having count(*) > 1 and count(*) < 5
    
    计数(*)大于1且计数(*)小于5
    
    你可以使用任何你想要的限定词——它们不必匹配,它们都包含在“having”语句中。

    什么样的SQL?MySQL?Microsoft SQL Server?神谕通道etc-1这缺少HAVING子句,该子句只标识出现多次的记录,正如原始问题所要求的那样。他没有提到他只想查看1次以上的记录,而是要检查这些记录。问题指出:“我想检查一条数据是否在特定列中出现多次”。如果没有HAVING子句,您将返回所有值,如果表很大,则很难找到多次出现的值。这非常有用。我真的很欣赏各种各样的方法和解释。谢谢-Leo性能问题是什么?将从AXDelNotesNoTracking GROUP BY SalesID中选择COUNT()>1的SalesID,COUNT(),这会很快吗?认为这是最好的选择,因为它不会像接受的答案中那样需要不必要的子查询。
    having count(*) > 1 and count(*) < 5