简单的SELECT,但添加JOIN会返回太多行

时间:2013-08-01 16:10:30

标签: select join where

以下查询返回9,817条记录。现在,我想从另一个表中再选择一个字段。请参阅注释掉的2行,我只是选择了这个附加字段并添加了一个JOIN语句来绑定这些新列。添加这些行后,查询现在返回649,200条记录,我无法弄清楚原因!我想我的WHERE标准和JOIN语句一起出了问题。请帮助,谢谢。

SELECT DISTINCT dbo.IMPORT_DOCUMENTS.ITEMID,BEGDOC,BATCHID

- ,dbo.CATEGORY_COLLECTION_CATEGORY_RESULTS.CATEGORY_ID

FROM IMPORT_DOCUMENTS

- 加入dbo.CATEGORY_COLLECTION_CATEGORY_RESULTS ON

dbo.CATEGORY_COLLECTION_CATEGORY_RESULTS.ITEMID = dbo.IMPORT_DOCUMENTS.ITEMID

WHERE(BATCHID LIKE'IC0%'或BATCHID LIKE'LP0%')

AND dbo.IMPORT_DOCUMENTS.ITEMID IN

  (SELECT dbo.CATEGORY_COLLECTION_CATEGORY_RESULTS.ITEMID FROM 

CATEGORY_COLLECTION_CATEGORY_RESULTS

    WHERE SCORE >= .7 AND SCORE <= .75 AND CATEGORY_ID IN(

      SELECT CATEGORY_ID FROM CATEGORY_COLLECTION_CATS WHERE COLLECTION_ID IN (11,16))

   AND Sample_Id > 0)

AND dbo.IMPORT_DOCUMENTS.ITEMID NOT IN

(SELECT ASSIGNMENT_FOLDER_DOCUMENTS.Item_Id FROM ASSIGNMENT_FOLDER_DOCUMENTS)

1 个答案:

答案 0 :(得分:1)

一个可能的原因是因为您的某个表包含较低级别的数据,低于您的连接键。例如,每个商品ID可能有多个记录。相同的项目ID重复X次。我会修复如下的查询。如果没有数据知识,请尝试运行以下修改过的查询....如果输出不是您要查找的内容,请将其转换为选择中的SELECT ...

希望这会有所帮助......

尝试此SQL:SELECT DISTINCT a.ITEMID,a.BEGDOC,a.BATCHID,b.CATEGORY_ID FROM IMPORT_DOCUMENTS a JOIN(SELECT CATIDORY_COLLECTION_CATEGORY_RESULTS SELECT SCIST&gt; = .7 AND SCORE&lt; = .75 AND CATEGORY_ID IN(从CATEGORY_COLLECTION_CATS中选择DISTINCT CATEGORY_ID,其中COLLECTION_ID在(11,16)中)和Sample_Id&gt; 0)B ON a.ITEMID = b.ITEMID WHERE a。(a.BATCHID LIKE'IC0%'或a.BATCHID LIKE'LP0 %')和a.ITEMID NOT IN(从ASSIGNMENT_FOLDER_DOCUMENTS中选择DIDTINCT Item_Id)