我有一个SQL Server表Top_Research_Areas
,其中包含类似的数据
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
的{{1}}以外的记录以外的Top_Research_Areas
1}}。
我使用了这个查询,即
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
来从sub_aminer_paper
检索research_area
时,它会向我提供输出,例如如果我检索两个aid
的记录,即2937
和11120
,则会将输出显示为:
我们可以看到前2 Paper_Count
的{{1}}是aid
,即它应该提供3+1+1+4+2+2
条记录,但它会给{{1}因为13
,14
实际上属于表research_area
中的optimization problem
即aid
,而是使用11120
子句进行匹配{{1}它将两个Top_Research_Areas
的{{1}}混合在一起,而我在输出中需要IN
个记录,而不是research_area
如何处理?
请帮助和谢谢!
答案 0 :(得分:0)
可能有一篇论文关于"优化问题" for 2937,它没有登录top_research_Areas。
请参阅id this help:从sub_aminer_paper中选择(aid,research_area)的组合,
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))