sql语句面试题 求解答(貌似挺难的)
--------------------编程问答-------------------- 不想学就不用答,想学就自己答。 --------------------编程问答--------------------
这个我是费了老大劲也没做出来的题,特来此求指教 --------------------编程问答-------------------- 1、4
2、update TestA a set a.Grade = (select b.Grade from TestB b where b.STU_ID = a.STU_ID )
3、update TestA a set a.STU_ID = a.STU_ID || a.Grade where a.STU_Name like '张%'
4、select * from (select a.*,rownum rn from TestA a desc) where rn > 20 and rn<=40
没测试 你自己测试看看吧 --------------------编程问答--------------------
谢了,但前两个不太对 --------------------编程问答--------------------
update TestA a set a.Grade = (select b.Grade from TestB b where b.STU_ID = a.STU_ID ) 这句明显错了 会把TestA里面有的数据会设置为null了,这个正确的做法应该是在循环里面去弄 应该要用存储过程吧?
--------------------编程问答--------------------
--------------------编程问答--------------------
1).4
2).(这个可以在Oracle下执行 mysql 应该执行不了)
begin for p in (select * from TestB)loop
update TsetA a set a.Grade=p.Grade where a.STU_ID=p.STU_ID;
end loop;
end;
3).update TestA a set SUT_ID=a.STU_ID||'_'||a.Grade where a.STU_NAME like '张%';
4).select * from TestA a order by a.Grade desc limit(21,20); (这个只适用mysql)
merge into TestA a
using TestB b
on (a.id=b.id)
when matched then
update
set a.grade=b.grade;
在Oracle中用merge函数不错 --------------------编程问答--------------------
2)写错个表名称。。。。 --------------------编程问答-------------------- mark 回去试试 --------------------编程问答-------------------- mark --------------------编程问答--------------------
update TestA a set a.Grade = case when (select b.Grade from TestB b where b.STU_ID = a.STU_ID ) = null a.Grade else (select b.Grade from TestB b where b.STU_ID = a.STU_ID ) end;
补充:Java , Web 开发