Insert Into ...Select 加 Update From 同步表数据
2009-04-02 10:06
543 查看
公司站点新增加了个功能,需要对原来用户表扩展几个新字段,为了避免修改老的代码,采用加入新表的方式(建立一张ext_User(Username,UserId[pk],AccountsType..)表),原用户表sures(suid[pk],suname,aaaflag[vip用户int],advUser[高级用户bit])
ext_user.AccountsType 取0,1,9分别表示普通用户,高级用户跟,vip用户,而在sures表中 aaaflag=1表示vip,advUser=1表示高级用户,现在需要把sures表中的数据导入到ext_user表中,并设置相应属性(AccountsType)
考虑ext_user表有部分数据的情况,脚本如下:
--同步数据
Insert Into ext_User(UserId,UserName,Title,[Description],Summary,Keys,AccountsType)
Select s.suid,s.suname,s.sucompany,'','','',0
From sures s left join ext_user e On s.suid=e.userid
where e.UserId is Null
go
--更新高级用户
update ext_user Set AccountsType=1
From ext_user e inner join sures s on e.userId=s.suid where s.advUser=1
go
--更新vip用户
update ext_user Set AccountsType=9
From ext_user e inner join sures s on e.userId=s.suid where s.aaaflag=1
go
--同时更新高级用户跟vip用户(可以选择上面两句实现)
update ext_user Set AccountsType=
case s.aaaflag
when 1 Then 9
when 0 then
case s.advUser
when 1 then 1
when 0 then 0
End
End
From ext_user e inner join sures s on e.userId=s.suid
ext_user.AccountsType 取0,1,9分别表示普通用户,高级用户跟,vip用户,而在sures表中 aaaflag=1表示vip,advUser=1表示高级用户,现在需要把sures表中的数据导入到ext_user表中,并设置相应属性(AccountsType)
考虑ext_user表有部分数据的情况,脚本如下:
--同步数据
Insert Into ext_User(UserId,UserName,Title,[Description],Summary,Keys,AccountsType)
Select s.suid,s.suname,s.sucompany,'','','',0
From sures s left join ext_user e On s.suid=e.userid
where e.UserId is Null
go
--更新高级用户
update ext_user Set AccountsType=1
From ext_user e inner join sures s on e.userId=s.suid where s.advUser=1
go
--更新vip用户
update ext_user Set AccountsType=9
From ext_user e inner join sures s on e.userId=s.suid where s.aaaflag=1
go
--同时更新高级用户跟vip用户(可以选择上面两句实现)
update ext_user Set AccountsType=
case s.aaaflag
when 1 Then 9
when 0 then
case s.advUser
when 1 then 1
when 0 then 0
End
End
From ext_user e inner join sures s on e.userId=s.suid
相关文章推荐
- Insert Into ...Select 加 Update From 同步表数据
- 表数据的copy,insert into select/select into from
- mysql的insert into from select 和update by select
- 导数据时 insert into table_a select * from ....
- 创建表结构相同的表,表结构相同的表之间复制数据,Oracle 中 insert into XXX select from 的用法
- 复制数据select into from 与 insert into select 区别鉴赏
- mysql中复制表数据(select into from和insert into select)
- select into from 和 insert into select 的用法和区别复制表数据
- SQL之merge into 批量更新数据 sql数据同步 基于源表对目标表做Insert,Update,Delete操作
- INSERT INTO .. SELECT ... FROM DUAL WHERE.插入数据前判断表中是否已经存在
- 在MyBatis的select、insert、update、delete这些元素中都提到了parameterType这个属性。MyBatis现在可以使用的parameterType有基本数据类型和Ja
- select into from 与 insert into select 区别示例
- select into from 和 insert into select 的用法和区别
- MyBatis-3.4.2-源码分析15:XML解析之buildStatementFromContext(context.evalNodes(‘select|insert|update|delete’
- INSERT INTO SELECT语句 和 SELECT INTO FROM语句
- MYSQL数据库(十)- 数据表的插入(insert)、删(delete)、改(update)、查(select)、group by 分组、having语句设置分组条件,order by查询结果排序,
- SELECT INTO FROM和INSERT INTO SELECT ,CREATE TABLE 表名(SELECT)
- select into from 与 insert into select 区别
- mysql insert into select插入表中的数据与select的数据不一样
- MySQL 4.1.0 中文参考手册 --- 6.4 数据操纵:SELECT, INSERT, UPDATE, DELETE