按照条件在两个表之间拷贝数据 for mysql & sqlserver
来源:互联网 发布:淘宝网广场舞蹈服装 编辑:程序博客网 时间:2024/06/07 07:07
业务讲解
alarmeventlog(简称ael)表示一条报警信息;
alarmclientlog(简称acl)表示操作员对报警的处理记录,同一报警可能有多条处理记录。
ael与acl是一对多的关系,通过各自的strIndex和strUniqueTime关联。
acl.HandleTime表示每个操作员的处理时间。
现需要将acl中对应最新的一条记录拷贝到ael中去。
代码实现
因要支持两种数据库,且数据库之间存在语法限制,因此需要分别实现。
mysql的实现
UPDATE alarmeventlog ael SET ael.nState = IFNULL( (SELECT acl.nState FROM alarmclientlog acl WHERE ael.strIndex = acl.strIndex AND ael.strUniqueTime = acl.strUniqueTime GROUP BY acl.strIndex ORDER BY acl.HandleTime), ael.nState);
语句讲解:
IFNULL(符合条件的结果,不符合条件的结果)
找到最新的一条记录:GROUP BY acl.strIndex -- 对应多条记录,分组以后可以拿到一条记录ORDER BY acl.HandleTime -- 找到多条记录中时间最新的一条,在GROUP时将被选中
sqlserver的实现
UPDATE alarmeventlog SET alarmeventlog.nState = ISNULL( ( SELECT alarmclientlog.nState FROM alarmclientlog WHERE alarmeventlog.strIndex = alarmclientlog.strIndex AND alarmeventlog.strUniqueTime = alarmclientlog.strUniqueTime ), alarmeventlog.nState);
语句讲解:
ISNULL(符合条件的结果,不符合条件的结果)
注意:由于sqlserver语法限制,不能在子语句中使用GROUP BY和ORDER BY,因此ael中的结果将是acl中任意一条,而不是最新一条。
0 0
- 按照条件在两个表之间拷贝数据 for mysql & sqlserver
- MySQL两个数据库之间数据的拷贝
- 如何在两个SQLSERVER之间数据同步
- 如何在两个SQLSERVER之间数据同步
- 如何在两个SQLSERVER之间数据同步
- 如何在两个SQLSERVER之间数据同步
- mysql 按照条件导出数据
- 两个集群之间拷贝数据
- 如何在两个SQLSERVER之间实现数据同步
- 如何在两个SQLSERVER之间实现数据同步
- 在两个表之间根据相同名称栏位拷贝描述
- sqlserver中如何在两个数据库之间复制表
- Mysql-两个表之间复制数据
- mybatis 在mysql查询条件日期在某两个日期之间
- mysql 两个库之间复制表和表的数据
- mysqldump按照条件导出数据
- vi怎么实现在两个文件之间的拷贝&粘贴
- vi怎么实现在两个文件之间的拷贝&粘贴
- C#控制台基础 arraylist类处于哪个命名空间
- ubuntu添加路径的时候千万不要搞成覆盖了
- C++按照数字增长生成图像文件路径
- 在jsp页面如何获得 url 参数
- sql登录注入
- 按照条件在两个表之间拷贝数据 for mysql & sqlserver
- DataSet操作数据库
- 安卓专项测试之GPU测试探索
- Python logging模块详解
- Java线程:线程的调度-优先级
- 程序员思维的突破
- 修改状态栏的颜色为白色
- Eclipse RCP技术简介
- 设计模式之---观察者模式