你试一下,我没测试 update A set 毕业院校 =(select b.毕业院校 from B where b.身份号 =(select MIN(文化程度) from B where a.身份号 =b.身份号)) ;
update A set 毕业院校 =(select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B group by 身份号) BB)where A.身份号=BB.身份号
update A set 毕业院校 = (select 毕业院校 from B where 培训形式='脱产' and 身份号 in (select 身份号,MIN(文化程度) from B group by 身份号)BB) where A.身份号=BB.身份号
是两个表 B其实是A的附属情况表,A表的其他许多字段我都省略了 表的情况不用讨论了 bzszp(SongZip)你写的 update A set 毕业院校 =(select b.毕业院校 from B where b.身份号 =(select MIN(文化程度) from B where a.身份号 =b.身份号)) ; 还是不对(我没测试),因为select b.毕业院校 from B where b.身份号 =(select MIN(文化程度) from B where a.身份号 =b.身份号)查询出来的是同一身份号的多纪录。
bingshi(碎石) update A set 毕业院校 =(select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B group by 身份号) BB)where A.身份号=BB.身份号 MIN(毕业院校) 怎么理解?
毕业院笑字段是varchar2,不是数字,也可以用MIN?
update A set 毕业院校=(select b.毕业院校 from B where b.文化程度=(select MIN(b1.文化程度) from B b1 where a.身份号 =b1.身份号) and a.身份号 =b.身份号);这样是没有问题,但是你是否要过滤掉培训形为脱产的呢?
因为你用了group by 所以要加min限制,group by的语法规定
bingshi(碎石) update A set 毕业院校 =(select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B group by 身份号) BB)where A.身份号=BB.身份号select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B group by 身份号 单独执行是正确的,但整体执行出错,是不是select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B group by 身份号) BB出错了
bzszp(SongZip) update A set 毕业院校=(select b.毕业院校 from B where b.文化程度=(select MIN(b1.文化程度) from B b1 where a.身份号 =b1.身份号) and a.身份号 =b.身份号); 这样是没有问题,但是你是否要过滤掉培训形为脱产的呢? -------------------------------------------------------------------- 我是要过滤掉函授的,举例:李三本科是脱产的,硕士是函授的,只取李三脱产里面文化程度最高的 要用到group by 身份号,因为一个人可以上很多次学
update A set 毕业院校 =(select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B where A.身份号=B.身份号 group by 身份号) BB)应该可以了,你验证一下结果对吗?
SQL> select * from a;姓名 毕业院校 毕业时间 身份号 职务 ---------- ---------- ------------------- ---------- ---------- 李三 大学 2002-11-21 13:32:13 001 开发经理 吴仁 大学 2002-11-21 13:32:16 002 人事经理SQL> select * from b;身份号 毕业院校 培训形式 文化程度 姓名 ---------- ---------- ---------- --------- ---------- 001 南京大学 脱产 4 李三 001 人民大学 脱产 3 李三 002 北京大学 脱产 3 吴仁SQL> update A set 毕业院校=(select b.毕业院校 from B where b.文化程度=(select MIN(b1.文化程度) from 2 B b1 where a.身份号 =b1.身份号 and b1.培训形式='脱产') and a.身份号 =b.身份号);已更新2行。SQL> select * from a;姓名 毕业院校 毕业时间 身份号 职务 ---------- ---------- ------------------- ---------- ---------- 李三 人民大学 2002-11-21 13:32:13 001 开发经理 吴仁 北京大学 2002-11-21 13:32:16 002 人事经理
update A set 毕业院校 =(select b.毕业院校 from B where b.身份号 =(select MIN(文化程度) from B where a.身份号 =b.身份号)) ;
where A.身份号=BB.身份号
B其实是A的附属情况表,A表的其他许多字段我都省略了
表的情况不用讨论了
bzszp(SongZip)你写的
update A set 毕业院校 =(select b.毕业院校 from B where b.身份号 =(select MIN(文化程度) from B where a.身份号 =b.身份号)) ;
还是不对(我没测试),因为select b.毕业院校 from B where b.身份号 =(select MIN(文化程度) from B where a.身份号 =b.身份号)查询出来的是同一身份号的多纪录。
update A set 毕业院校 =(select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B group by 身份号) BB)where A.身份号=BB.身份号 MIN(毕业院校) 怎么理解?
B b1 where a.身份号 =b1.身份号) and a.身份号 =b.身份号);这样是没有问题,但是你是否要过滤掉培训形为脱产的呢?
update A set 毕业院校 =(select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B group by 身份号) BB)where A.身份号=BB.身份号select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B group by 身份号
单独执行是正确的,但整体执行出错,是不是select 毕业院校 from (select 身份号,MIN(文化程度),MIN(毕业院校) 毕业院校 from B group by 身份号) BB出错了
update A set 毕业院校=(select b.毕业院校 from B where b.文化程度=(select MIN(b1.文化程度) from
B b1 where a.身份号 =b1.身份号) and a.身份号 =b.身份号);
这样是没有问题,但是你是否要过滤掉培训形为脱产的呢?
--------------------------------------------------------------------
我是要过滤掉函授的,举例:李三本科是脱产的,硕士是函授的,只取李三脱产里面文化程度最高的
要用到group by 身份号,因为一个人可以上很多次学
---------- ---------- ------------------- ---------- ----------
李三 大学 2002-11-21 13:32:13 001 开发经理
吴仁 大学 2002-11-21 13:32:16 002 人事经理SQL> select * from b;身份号 毕业院校 培训形式 文化程度 姓名
---------- ---------- ---------- --------- ----------
001 南京大学 脱产 4 李三
001 人民大学 脱产 3 李三
002 北京大学 脱产 3 吴仁SQL> update A set 毕业院校=(select b.毕业院校 from B where b.文化程度=(select MIN(b1.文化程度) from
2 B b1 where a.身份号 =b1.身份号 and b1.培训形式='脱产') and a.身份号 =b.身份号);已更新2行。SQL> select * from a;姓名 毕业院校 毕业时间 身份号 职务
---------- ---------- ------------------- ---------- ----------
李三 人民大学 2002-11-21 13:32:13 001 开发经理
吴仁 北京大学 2002-11-21 13:32:16 002 人事经理