从SQL中的两个表中提取数据

时间:2014-11-13 10:19:59

标签: sql sql-server

我有两张桌子

表1。

Name         Grade   Math  
---------------------------    
Chris          A      30
Julie          AA     35
Ross           AA     32     

表2

Name       English
-------------------------    
Julie      29
Chris      22
Ross       20

我想得到AA等级学生的英语成绩总和。我怎样才能做到这一点?请帮忙。

编辑:我想得到数学AA成绩的英语成绩总和,即朱莉和罗斯:英语成绩总和为29 + 20。

3 个答案:

答案 0 :(得分:1)

尝试

SELECT SUM(t2.English)
FROM Table1 t1
JOIN Table2 t2
ON t1.Name = t2.Name
WHERE t1.Grade = 'AA'

答案 1 :(得分:1)

试试这个,

SELECT Sum(B.English) Total
FROM   #Table_1 A
JOIN   #Table_2 B ON A.Name = B.Name
WHERE  Grade = 'AA' 

如果您想单独使用此标记

SELECT A.Name,
       Sum(B.English) Total
FROM   #Table_1 A
JOIN   #Table_2 B ON A.Name = B.Name
WHERE  Grade = 'AA'
GROUP  BY A.Name 

答案 2 :(得分:0)

从一个表中获取数据的直接方式是使用EXISTS或IN。

select sum(english)
from table2 t2
where exists
(
  select *
  from table1 t1
  where t1.name = t2.name
  and t1.grade = 'AA'
);

使用IN:

select sum(english)
from table2
where name in
(
  select name
  from table1
  where grade = 'AA'
);

我喜欢IN在这里好多了,但这是一个品味问题。

两个查询都假设两个表的主键都是名称。我请你告诉我们,但你没有。所以:再使用另一个主键,您可能需要其他查询。