SQL关于两张表关联数据的查询问题,请教各位大虾
第一张表列名:学号,姓名,成绩。第二张表:学号,姓名,捐款金额(其中第二张表每捐款一次,就多一行记录)。现在要求在第一张表的学生中筛选出捐款次数>1的记录...
第一张表列名:学号,姓名,成绩。第二张表:学号,姓名,捐款金额(其中第二张表每捐款一次,就多一行记录)。现在要求在第一张表的学生中筛选出捐款次数>1的记录
展开
3个回答
展开全部
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 行受影响)
学号 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 行受影响)
展开全部
select * from 第一张表 where 学号 in (select 学号 from 第二张表 where 第一张表.学号=第二张表.学号 group by 第二张表.学号 having count(第二张表.学号)>1 )
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select *
from 第一张表名
where 学号 in (select 学号
from 第二张表名
where第一张表名.学号=第二张表名.学号
group by 第二张表名.学号
having count(第二张表名.学号)>1 )
from 第一张表名
where 学号 in (select 学号
from 第二张表名
where第一张表名.学号=第二张表名.学号
group by 第二张表名.学号
having count(第二张表名.学号)>1 )
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询