sql数据库查询疑问

来源:百度知道 编辑:UC知道 时间:2024/05/28 19:41:51
有2表 学号为主键
table A table B
学号 姓名 学号 成绩
01 a 01 90
02 b 02 80
03 c 03 70
04 d 04 60
... ... ... ...
如果在表A中有数据为学号10 姓名w的记录,二表B中没有学号为10的记录,如何使用sql语句查询。
其实是一道笔试题~
原意就是理想的状态下 表A和表B都有相同个数的学号,但有可能在输入数据的时候忘记了某个记录,要求用sql语句显示这个忘记的记录

SELECT a.学号,a.姓名,ISNULL(b.成绩,0) AS 成绩
FROM TableA AS a
LEFT JOIN TableB AS b
ON a.学号 = b.学号

这样查出来的结果是,如果表b中没有,则成绩显示为0

如果要查询表B中没有成绩的学号.可以用以下语句:

SELECT * FROM TableA WHERE 学号 NOT IN(SELECT 学号 FROM TableB)

A表左关联B表,如B表未有A表的学号,B表学号将为NUlL
SELECT 表A.*
FROM 表A LEFT JOIN 表B
ON 表A.学号 = 表B.学号
WHERE 表B.学号 IS NULL

楼主是不是想查询没有成绩的学生有哪些啊?

这么写试试:

select A.学号, A.姓名 from A
left join B on A.学号 = B.学号
where B.学号 is null

select * from A WHERE 学号 not in (select 学号 from B)

select 学号,姓名 FROM A WHERE 学号 not in (select 学号 FROM B)