SQL关于两张表关联数据的查询问题,请教各位大虾

第一张表列名:学号,姓名,成绩。第二张表:学号,姓名,捐款金额(其中第二张表每捐款一次,就多一行记录)。现在要求在第一张表的学生中筛选出捐款次数>1的记录... 第一张表列名:学号,姓名,成绩。第二张表:学号,姓名,捐款金额(其中第二张表每捐款一次,就多一行记录)。现在要求在第一张表的学生中筛选出捐款次数>1的记录 展开
 我来答
yegao
2012-03-15 · TA获得超过1154个赞
知道小有建树答主
回答量:533
采纳率:66%
帮助的人:378万
展开全部
CREATE TABLE student(
学号 int ,
姓名 varchar(20),
成绩 int,
primary key(学号,姓名)
)
CREATE TABLE donate(
学号 int,
姓名 varchar(20),
捐款金额 int,
foreign key (学号,姓名) references student(学号,姓名),
)
INSERT INTO student VALUES(1,'潘玮柏',98)
INSERT INTO student VALUES(2,'周杰伦',68)
INSERT INTO student VALUES(3,'王力宏',72)
INSERT INTO student VALUES(4,'苏东坡发火',100)

INSERT INTO donate VALUES(3,'王力宏',72)
INSERT INTO donate VALUES(2,'周杰伦',72)
INSERT INTO donate VALUES(1,'潘玮柏',72)
INSERT INTO donate VALUES(1,'潘玮柏',72)
INSERT INTO donate VALUES(4,'苏东坡发火',72)

SELECT * FROM student WHERE 学号 in(SELECT DISTINCT a.学号 FROM student AS a INNER JOIN donate AS b ON(a.学号=b.学号) GROUP BY a.学号 HAVING count(b.学号)>1)
结果:
学号 姓名 成绩
----------- -------------------- -----------
1 潘玮柏 98

(1 行受影响)
unitech2010
2012-03-15 · TA获得超过1062个赞
知道小有建树答主
回答量:1025
采纳率:100%
帮助的人:906万
展开全部
select * from 第一张表 where 学号 in (select 学号 from 第二张表 where 第一张表.学号=第二张表.学号 group by 第二张表.学号 having count(第二张表.学号)>1 )
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
914dan
2012-03-24 · TA获得超过303个赞
知道答主
回答量:57
采纳率:0%
帮助的人:8.9万
展开全部
select *
from 第一张表名
where 学号 in (select 学号
from 第二张表名
where第一张表名.学号=第二张表名.学号
group by 第二张表名.学号
having count(第二张表名.学号)>1 )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式