求sql语句(在left join 的基础上)

[复制链接]
查看11 | 回复4 | 2011-1-25 11:44:59 | 显示全部楼层 |阅读模式
求sql语句
表A
学号 姓名 班级
1
张三 1班
2
李四
2班
3
王五
3班
表B
学号成绩
1
100
3
98
求得到表C的sql语句
学号姓名班级成绩
1
张三 1班100
2
李四 2班60
<-这个60分我可以再语句中自己修改
3
王五 3班 98
谢谢各位高人!

回复

使用道具 举报

千问 | 2011-1-25 11:44:59 | 显示全部楼层
select a.学号,a.姓名,a.班级,b.成绩 from A a left join B b on a.学号=b.学号这个可以得到,还有这个只是个临时表,数据库其他不存在这张表的,想要修改数据还是要在原来的那张表里改。
回复

使用道具 举报

千问 | 2011-1-25 11:44:59 | 显示全部楼层
left join 效率低。如果是经常用到的属性,不如设计一个冗余列更有效率些。 对吧。例如进货主表 有冗余的总数量、总金额。而其它这二个列通过Sum()明细表的数量和金额就能得到。 但在主表里冗余了总数量、总金额后就方便很多,而这二个也是会经常用到的。 另外,你的意思是要根据A、B二表创建新的表C么? 如果是这样的话,就if exists(sele
回复

使用道具 举报

千问 | 2011-1-25 11:44:59 | 显示全部楼层
select
t1.学号,t1.姓名,t1.班级, isnull(t2.成绩,60) 成绩from 表A t1 left join 表B t2 on t1.学号 = t2.学号
回复

使用道具 举报

千问 | 2011-1-25 11:44:59 | 显示全部楼层
Select a.学号,a.姓名,a.班级,Case When b.成绩 is not null then b.成绩
Else 60(这个分数可以随便换)
As 成绩From 表A a left join 表B b on a.学号 = b.学号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行