绝对经典的表记录操作(超越版)

***一次性插入多条记录:
table1表结构
-----------
id,name
-----------
同时插入多条记录:
insert  into table1( id,name) values (1,'name1'),(2,'name2'),(3,'name3'),(4,'name4'),(5,'jname1');

 

///////////////////////////////////////////

 

***表与表之前的记录复制
table2,table3
-------------
id,name
-------------
将表table2中的数据复制到表table3中:

insert  into table3 select name from table2

 

///////////////////////////////////////////

 

***建立表并从一个表中复制数据

create table mytable as select * from emp


///////////////////////////////////////////

 

***显示字段值占用百分比(绝对原创)

 SELECT id,name,((CASE WHEN NAME='jname1' THEN 1 ELSE 0 END)*0.1 + (CASE WHEN NAME='name1' THEN 1 ELSE 0 END)*0.1) AS a FROM mytable

 

///////////////////////////////////////////

 

***一个复杂的记录插入操作
insert into T_EMPLOYEE_ROLE( employee_id,role_id, org_id )
      select empid,roleid,orgid from (    
             select e.id empid,r.id roleid,o.id orgid   ,(
                            select count(*) from T_EMPLOYEE_ROLE where employee_id=e.id and role_id=r.id and org_id=o.id
             ) ifExisted     
      from T_EMPLOYEE e,T_ROLE r,T_ORGANIZATION o    
      where e.id in (10001041,10001030,   111111111)  --员工id串    
              and r.id in (3,1065,                22222222)   --角色id串    
              and o.id in (10000000,10000002,     333333333)  --组织id串 ) t
where ifExisted=0  --IFEXISTED=0的意思为:如果查出来的记录为0的话就插入,否则不作处理

posted @ 2012-03-01 21:36  cyjch  阅读(280)  评论(0编辑  收藏  举报