我有一个SQL Server表Top_Research_Areas
,其中包含像ie这样的数据
aid res_category_id research_area Paper_Count
---------------------------------------------------------------
2937 33 markov chain 3
2937 33 markov decision process 1
2937 1 linear system 1
11120 29 aspect oriented prog 4
11120 1 graph cut 2
11120 1 optimization problem 2
12403 2 differential equation 7
12403 1 data structure 2
12403 1 problem solving 1
35786 1 complete graphs 11
35786 1 graph cut 10
35786 NULL NULL 2
49261 3 finite automata 6
49261 3 finite element 2
49261 14 database 2
78841 5 genetic programming 6
78841 23 active learning 2
78841 28 pattern matching 1
现在,我要选择pid
从另一个表,即sub_aminer_paper
针对aid
的表Top_Research_Areas
,而表sub_aminer_paper
中包含列,即aid
,pid
,research_area
,res_category_id
和一些列了。
而且Top_Research_Areas
只包含top_3记录research_area
的,而表中sub_aminer_paper
包含了比这些记录为其他aid
'S IN Top_Research_Areas
。
我用过这个查询,即
SELECT
aid, pid, research_area
FROM
sub_aminer_paper
WHERE
aid IN (2937, 11120)
AND research_area IN (SELECT
research_area
FROM
Top_Research_Areas
WHERE
aid IN (2937, 11120))
ORDER BY aid ASC
现在的问题是,当通过匹配两个表中pid
的来从中检索时,它会给我输出,例如,如果我检索两个的记录ie和,它会给我输出:sub_aminer_paper
research_area
aid
2937
11120
我们可以看到,Paper_Count
对于前2aid
的是3+1+1+4+2+2
即它应该给13
记录,但它给14
因为research_area
即optimization problem
实际上属于aid
即11120
在表中Top_Research_Areas
,但通过使用IN
子句匹配research_area
它正在作为一个混合research_area
的两种aid
的,而我需要13
在输出中而不是记录14
。
如何处理?
请帮忙,谢谢!
可能有一篇关于援助2937的“优化问题”的论文,没有记录在top_research_Areas中。
请参阅id,这会有所帮助:从存在(aid,research_area)组合的sub_aminer_paper中进行选择,
SELECT
sap.aid, sap.pid, sap.research_area
FROM
sub_aminer_paper sap
WHERE
sap.AID IN (2937, 11120) --- For indexing which I'm assuming this column has
AND EXISTS (SELECT 1 FROM Top_Research_Areas tra WHERE tra.aid = sap.aid and tra.research_area = sap.research_area and tra.aid in (2937,11120))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句