绝对经典的表记录操作(超越整理)
2016-05-25 18:43
316 查看
***一次性插入多条记录:
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的话就插入,否则不作处理
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的话就插入,否则不作处理
相关文章推荐
- android学习笔记(八)SharedPreferences、editor
- 考勤助手——教务安排课程时序图
- CallbackOnCollectedDelegate was detected C#调用C++DLL注册函数指针出错解决方案
- KNN算法
- ADB小知识备忘
- linux中编译静态库(.a)和动态库(.so)的基本方法
- 将A表和B表的产生的笛卡尔积一次性插入C表
- Maven实战:Maven生命周期
- Oracle数据库——触发器的创建与应用
- JavaScript数组简述
- Android Volley 通信框架应用解析
- LoadRunner监控Windows和Linux常见问题
- DB2中不同于其它数据库的操作
- 多表查询一例子
- SQL Server存储过程和游标有关实例以及相关网址
- 非常详细的详谈struct sk_buff
- jQ源码之each
- 千万级数据库(MSSQL)删除重复记录
- [遇见时光]解决‘javac’不是内部或外部命令的问题
- hdu 5685 Problem A(2016"百度之星" - 资格赛(Astar Round1)——线段树)