0

下面的查询返回 9,817 条记录。现在,我想从另一个表中再选择一个字段。查看被注释掉的 2 行,我只是选择了这个附加字段并添加了一个 JOIN 语句来绑定这个新列。添加这些行后,查询现在返回 649,200 条记录,我不知道为什么!我想我的 WHERE 标准与 JOIN 语句一起出现了问题。请帮忙,谢谢。

选择 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)
4

1 回答 1

1

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

希望这可以帮助....

试试这个 SQL:从 IMPORT_DOCUMENTS 中选择 DISTINCT a.ITEMID、a.BEGDOC、a.BATCHID、b.CATEGORY_ID FROM CATEGORY_COLLECTION_CATS WHERE COLLECTION_ID IN (11,16)) AND Sample_Id > 0) B ON a.ITEMID =b.ITEMID WHERE a.(a.BATCHID LIKE 'IC0%' OR a.BATCHID LIKE 'LP0%') AND a. ITEMID 不在(从 ASSIGNMENT_FOLDER_DOCUMENTS 中选择 DIDTINCT Item_Id)

于 2013-08-01T16:30:01.020 回答