Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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_Sql Server 2008 - Fatal编程技术网

Sql 循环查询返回的记录多于需要的记录数

Sql 循环查询返回的记录多于需要的记录数,sql,sql-server-2008,Sql,Sql Server 2008,请帮助完成此查询。它应该只返回少于3000条记录,但返回的记录超过400万条。它需要显示所有重复的记录。。。所有的信息都在同一个表VENDFIl上,所以我使用了自连接,但它似乎在循环。。。 查询: SELECT A.FEDTID, B.VENDOR, C.NPI_NUMBER FROM VENDFIL A, VENDFIL B, VENDFIL C GROUP BY A.FEDTID, B.VENDOR 谢谢…为什么需要自动加入?使用having子句 SELECT fedtid, vend

请帮助完成此查询。它应该只返回少于3000条记录,但返回的记录超过400万条。它需要显示所有重复的记录。。。所有的信息都在同一个表VENDFIl上,所以我使用了自连接,但它似乎在循环。。。 查询:

SELECT A.FEDTID, B.VENDOR, C.NPI_NUMBER
FROM VENDFIL A, VENDFIL B, VENDFIL C
GROUP BY A.FEDTID, B.VENDOR

谢谢…

为什么需要自动加入?使用having子句

  SELECT fedtid, vendor, npi_number, COUNT(*)
    FROM vendfil
GROUP BY fedtid, vendor, npi_number
  HAVING COUNT(*) > 1

您正在进行三重
交叉连接
。 如果要将一个表与其自身联接,则需要定义条件

如果要显示重复记录,则不需要联接

SELECT fedtid, vendor, npi_number, COUNT(1) cnt
    FROM vendfil
GROUP BY fedtid, vendor, npi_number
  HAVING COUNT(1) > 1
要显示重复记录并尽可能重复它们,请使用此查询

Select * from vendfil
where Exists(
   Select * from (SELECT fedtid, vendor, npi_number, COUNT(1) cnt
                  FROM vendfil
                  GROUP BY fedtid, vendor, npi_number
                  HAVING COUNT(1) > 1) t
   where t.fedtid = vendfil.fedtid and t.vendor = vendfil.vendor and t.npi_number = vendfil.npi_number
)

提供有关表的更多信息。所有信息都在一个表中…vendfil…这是一个字母数字表查询工作它只是返回了超出表属性的更多信息您没有使用自联接,您使用的是交叉联接,正在创建笛卡尔积。如果需要自联接,那么实际上需要联接特定列上的表。完全消除联接<代码>从VENDFIL中选择一个.Fedtid、一个供应商、一个NPI_编号,按一个.Fedtid、一个供应商提交一份订单每个连接都会导致多条记录。因此,如果Vendfil有100条记录,您将生成100*100*100。如果您只是从vendfil中选择,您将有100条记录。如果您根据条件加入,则生成的记录数将等于匹配的记录数1*2*2+XyZ,其中XyZ是每个表中的相关记录数。好的。它现在显示了重复,但有没有办法将重复分组……将重复分组是什么意思?
更新问题并显示所需结果可能有助于将输出中的重复记录排列或组合在一起?您的意思是显示所有重复记录并尽可能多地重复它们吗?