declare @xuehao varchar(20)
set @xuehao=(select 学号 from 学生列表 where 姓名='小明')
declare @bianhao varchar(20)
set @bianhao=(select 编号 from 课程列表 where 名称='语文')insert table(学号,编号,分数)
values(@xuehao,@bianhao,89)
set @xuehao=(select 学号 from 学生列表 where 姓名='小明')
declare @bianhao varchar(20)
set @bianhao=(select 编号 from 课程列表 where 名称='语文')insert table(学号,编号,分数)
values(@xuehao,@bianhao,89)
select (select 学号 from 学生列表 where 姓名='小明') a ,
(select 编号 from 课程列表 where 名称='语文') b,89
我用的是access数据库,能创建存储过程吗?
insert into 成绩表 select (select 学号 from 学生列表 where 姓名='小明') 学号 ,(select 编号 from 课程列表 where 名称='语文') 课程编号,89把它写成一行是不是应该就是上边这句呢?
select (select 学号 from 学生列表 where 姓名='小明') a ,
(select 编号 from 课程列表 where 名称='语文') b,89这种方法有问题哦.
如果有两个学生都叫'小明'呢? 同理, 点点星灯的也有这样的问题.具体完善的方法可以这样做.
在第一种方法中加top 1;
在第二种方法中, 改set @xuehao=(select 学号改为 select @xuehao=学号(课程编号的类似)
(select max(编号) from 课程列表 where 名称='语文'),89
declare @tb1 table([学号] varchar(10),[课程编号] varchar(10),[分数] decimal(4,1))
--学生列表
declare @tb2 table([学号] varchar(10),[姓名] varchar(10))
--课程列表
declare @tb3 table([编号] varchar(10),[名称] varchar(10))
insert @tb2 select '001','小明'
insert @tb3 select 'Y102','语文'--测试
insert @tb1
select (select [学号] from @tb2 where [姓名]='小明'),
(select [编号] from @tb3 where [名称]='语文'),
89
--查看
select * from @tb1--结果
/*
学号 课程编号 分数
---------- ---------- ------
001 Y102 89.0(所影响的行数为 1 行)
*/