㈠ 查询同时只选修了1号和2号课程的学生的学号
目前想到3种方法:
1)select Student.S#,Sname from Student
join SC on Student.S# = SC.S#
where Student.S# in (select Student.S# from Student join SC on Student.S# and SC.S# where C# = ’001#’)
and SC.C# = ’002#’
-- 先筛选出选了课程1的学生学号,再筛选了课程2的学生
2)select SC.S# from SC
where SC.C# in ('001#','002#') group by SC.S# having COUNT(*) = 2;
-- 在成绩表中筛选出选修了课程1和课程2的数据,如果同一个学生这两条记录加起来是2,就说明他既选修了课程1,也选修了课程2
3)select Student.S#,Sname from Student
join SC on Student.S# = SC.S#
where SC.C# = ‘1#’ and exists
(select Student.S#,Sname from Student
join SC on Student.S# = SC.S#
where SC.C# = ‘2#’)
㈡ access中的sql如何写找出一个表中同时选修了课程编号为1和2两门课的学生的姓名
Select 姓名 from Table where 课程编号=1 and 课程编号=2
㈢ 用SQL查询同时选修了1号课和2号课的学生学号
工具/材料:以Management Studio为例。
1、首先在桌面上,点击“Management Studio”图标。
㈣ 用SQL查询同时选修了1号课和2号课的学生学号
sno 指的是什么?cno指什么? 上面的sql语句是不可能实现同样的功能的。
sno如果是指学生学号;
cno是指课程号的话。
where cno=’1‘ and cno=’2‘
是指课程号是1和2 的学生信息。
where sno=’1‘ and sno in(select sno
from SC
where sno=’2‘)
是指学生学号是1和2 的学生,事实上,作为主键的sno没有可能同时是1和2的。
㈤ 数据库sql查询同时选修了选修课1和选修课2的学生学号
select Sno from sc where Cno in('课1','课2') group by Sno having count(*)=2
㈥ 用SQL查询同时选修了1号课和2号课的学生学号怎么查
你好像写错了吧,,,
我感觉应该是
select Sno
from SC
where Cno='1' and son in (select Sno from SC where Cno='2');
或者
where Cno='1' intersert select Sno from SC where Cno='2');
INTERSECT对两个查询做交集。相当于and
㈦ SQL 语句:在sc表中查询至少选修了两门课的学生学号的语句
至少选修c1和c2的学生编号:
select sno(学生的学号) from sc(学生选课表) group by sno having count(*)>1
SQL结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。
SQL结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
(7)sql选修1号和2号课程扩展阅读:
SQL常见语句:
更新:update table1 set field1=value1 where 范围。
查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)。
排序:select * from table1 order by field1,field2 [desc]。
求和:select sum(field1) as sumvalue from table1。
平均:select avg(field1) as avgvalue from table1。
最大:select max(field1) as maxvalue from table1。
最小:select min(field1) as minvalue from table1[separator]。
㈧ SQL求选修了1号课或2号课的学生学号和课号及成绩用集合查询的方法
SELECT Sno
FROM SC
WHERE Cno='1'
INTERSECT
SELECT Sno
FROM SC
WHERE Cno='2'
集合运算,列的数目、类型要一致
如果还报错,那就考虑别的语法吧,not in或者not exists
列值不一样的记录,在集合想减时减不掉,所以要把cno和grade列去掉
㈨ SQL查询没有同时选修1号课程和2号课程学生的学号
SELECT DISTINCT Sno
FROM SC
WHERE Sno NOT IN
(SELECT Sno
FROM SC
WHERE Cno='1' AND Sno IN
(SELECT Sno
FROM SC
WHERE Cno='5'))
这是一般的变法,还可用集合查询,关键字INTERSECT
SELECT DISTINCT Sno
FROM SC
WHERE Sno NOT IN
(SELECT Sno
FROM SC
WHERE Cno='1'
INTERSECT
SELECT Sno
FROM SC
WHERE Cno='5')
㈩ 用SQL语句列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩。
很简单,先查询出1号课成绩学生的学号和成绩,再查询出选修2号课成绩的学生的学号和成绩,将两条查询语句作为两个将要查询的表,进行查询,并且用where设置条件,就行了,两个表连接可能要用到join on这条语句,LZ不懂可以直接网络,这个问题网络上很多的。