循环查询查询返回的记录多于所需的记录

时间:2015-02-04 19:26:40

标签: sql sql-server-2008

请帮助解决此问题。它应该只返回少于3000条记录,但它返回超过4M。它需要显示所有重复的记录...所有信息都在同一个表VENDFIl上,所以我使用了自联接,但它似乎是循环... 查询:

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

...谢谢

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你正在制造三重奏cross join。 如果你想自己加入一个表,你需要定义条件。

如果要显示重复记录,则不需要加入

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
)