数据库insert into加条件应该怎么样加?
我的意思是这样的,一个表有三个字段,分别为id,grade,rank。id不解释,grade是成绩,rank是指成绩所对应等级优良中差,如果说按insertinto这种插...
我的意思是这样的,一个表有三个字段,分别为id,grade,rank。id不解释,grade是成绩,rank是指成绩所对应等级优良中差,如果说按insert into这种插入法,这个优良中差也要自己去输入,但我想的是这个优良中差系统根据grade是多少而自动判断插入哪一项。简单地说就是,当成绩是88分时,就插入一个良,当成绩是66分时就插入一个中,就是加这样一个判定条件,请问在insert into语句中可以实现吗,或者有其它方法来实现吗?
展开
4个回答
展开全部
可以,比如
insert into tablename(id,grade,rank)
values
(11,88
(select case when proc = 60 then ‘及格’ when proc = 80 then ‘良好’ else '优秀' end as qq from
tablename1 where proc=60))
这只能对一条操作、
你可以试下过程:
declare
v_v varchar2(10);
begin
for rs in(select id,grade,rank from tablename)loop
if rs.grade >60 and <80 then
v_v:='及格';
else if rs.grade >80 and <90 then
v_v:='良好';
else if rs.grade >90 and <=10 then
v_v:='优秀';
else
v_v:='差';
end if;
insert into tablename1(id,grade,rank)
values(主键,rs.grade,v_v);
end loop;
commit;
exception when others then
rollback;
dbms_output.put_line(SQLERRM);
end;
insert into tablename(id,grade,rank)
values
(11,88
(select case when proc = 60 then ‘及格’ when proc = 80 then ‘良好’ else '优秀' end as qq from
tablename1 where proc=60))
这只能对一条操作、
你可以试下过程:
declare
v_v varchar2(10);
begin
for rs in(select id,grade,rank from tablename)loop
if rs.grade >60 and <80 then
v_v:='及格';
else if rs.grade >80 and <90 then
v_v:='良好';
else if rs.grade >90 and <=10 then
v_v:='优秀';
else
v_v:='差';
end if;
insert into tablename1(id,grade,rank)
values(主键,rs.grade,v_v);
end loop;
commit;
exception when others then
rollback;
dbms_output.put_line(SQLERRM);
end;
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
2013-03-30
展开全部
可以实现,而且很简单,用case语句就行了
insert into Table(grade, rank)
select 分数,
case when 分数>=90 then '优'
when 分数>=80 then '良'
when 分数>=60 then '中'
else '差' end
insert into Table(grade, rank)
select 分数,
case when 分数>=90 then '优'
when 分数>=80 then '良'
when 分数>=60 then '中'
else '差' end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-29
展开全部
不知道你什么数据库。
看你的需求, 也就是你希望
INSERT INTO 表 (id, grade) VALUES ( 某个ID, 88 );
然后 SELECT * from 表 where id = 某个ID;
结果能够查询出:
id grade rank
某个ID 88 良
这种情况, 如果是 SQL Server , 那么可以直接使用 ”计算列“ 的方式来处理。
其他数据库, 可以通过 触发器的方式来处理。
看你的需求, 也就是你希望
INSERT INTO 表 (id, grade) VALUES ( 某个ID, 88 );
然后 SELECT * from 表 where id = 某个ID;
结果能够查询出:
id grade rank
某个ID 88 良
这种情况, 如果是 SQL Server , 那么可以直接使用 ”计算列“ 的方式来处理。
其他数据库, 可以通过 触发器的方式来处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有,数据库有触发器,你可以用行级触发器,当插入的时候判断分数,用T-SQL插入,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询