日期:2014-05-18 浏览次数:20720 次
create table tb_subject(科目 varchar(10),老师 varchar(10),电话 varchar(11)) insert into tb_subject values('语文','张老师','1234567') insert into tb_subject values('数学','刘老师','1234568') insert into tb_subject values('政治','李老师','123456789') go create table tb_score(学号 varchar(10),科目 varchar(10),成绩 int) insert into tb_score values('123','语文',86) insert into tb_score values('123','数学',90) insert into tb_score values('123','英语',78) insert into tb_score values('888','语文',89) insert into tb_score values('888','数学',70) go select a.学号 , isnull(a.科目,b.科目) 学号 , a.成绩 , b.老师 , b.电话 from tb_score a left join tb_subject b on a.科目 = b.科目 drop table tb_subject,tb_score /* 学号 学号 成绩 老师 电话 ---------- ---------- ----------- ---------- ----------- 123 语文 86 张老师 1234567 123 数学 90 刘老师 1234568 123 英语 78 NULL NULL 888 语文 89 张老师 1234567 888 数学 70 刘老师 1234568 (所影响的行数为 5 行) */
------解决方案--------------------
create table subject
(
subject varchar(8),
teacher varchar(8),
phone varchar(11)
)
create table score
(
sno char(3),
subject varchar(8),
grade int
)
go
insert into subject values('语文', '张老师', '1234567')
insert into subject values('数学', '刘老师', '1234568')
insert into subject values('政治', '李老师', '123456789')
insert into score values('123', '语文', 86)
insert into score values('123', '数学', 90)
insert into score values('123', '英语', 78)
insert into score values('888', '语文', 89)
insert into score values('888', '数学', 70)
go
select sc.*, su.*
from score sc left join subject su on sc.subject = su.subject
where sc.sno = '123'
go
/*以下这种方法不符合ANSI的最新规定,在sql server 2000能用*/
select sc.*, su.*
from score sc, subject su
where sc.sno = '123'
and sc.subject *= su.subject
go