`
byx5185
  • 浏览: 113201 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

无聊的sql

    博客分类:
  • J2EE
阅读更多
昨天有个mysql数据库移植需求:
把online_log中每一个类型为2的用户,日志类型为0,最后一次日志的时间,导入到cam_info中相应用户的logout_time字段。cam_info中存储的是用户的id,online_log中存储的是用户名,通过account建立连接关系。

account 表:
id          name                         ...
1           wang_wang
2           liang_liang

cam_info 表:
account_id  ...  logout_time
1
2

online_log 表:
id      username    type    usertype  time                         ...
1       wang_wang   0       2         2009-10-22 10:17:34
2       liang_liang     1       2         2009-10-22 10:18:34
3       liang_liang     0       2         2009-10-22 10:45:34
4       wang_wang   1       2         2009-10-22 11:17:34
5       wang_wang   0       2         2009-10-22 14:17:34
6       liang_liang     1       2         2009-10-22 14:45:34
7       wang_wang   1       2         2009-10-22 15:17:34

这还是有些烦人的:
online_log和cam_info属于一对多关系,数据时从多到一。
同一用户某个类型的日志有多条,要取最后一条。
两个表之间没有直接关联。
要移植对象是online_log中每一个用户。
用一条sql写出来。
在update语句中有循环处理的。

平时不喜欢sql的我,在他人的一直要求下,思考了许久,写出这个令人厌烦的sql:
update cam_info set logout_time = (select tre.time from (select ac.id, re.time  from (select id,username,time  from online_log where type = 0 and user_type = 2 order by id desc) re ,account ac where  ac.name = re.username group by re.username order by re.id) tre where tre.id =  cam_info.account_id);


上面的sql在msyql数据引擎为MyISAM类型时,性能较差,并且cam_info.account_id不在tre结果集中的logout_time被设置为当前时间,做如下修改:
update cam_info set logout_time = (select tre.time from (select ac.id, re.time  from (select id,username,time  from online_log where type = 0 and user_type = 2 order by id desc) re ,account ac where  ac.name = re.username group by re.username order by re.id) tre where tre.id =  cam_info.account_id) where cam_info.account_id in (select distinct account.id from account,online_log where account.name = online_log.username);
分享到:
评论

相关推荐

    SQL的韩文 无聊的来看看

    虽然标题带有调侃的意味,"SQL的韩文 无聊的来看看"实际上可能意味着这个压缩包中包含的资料对于那些对SQL感到厌倦或需要换个视角学习的人来说是一个新的尝试。学习不同语言版本的SQL可以帮助你理解和掌握概念的普遍...

    sql局域网聊天工具代码

    开发者提到“里面很粗糙,是无聊时做的”,这可能意味着这是一个个人项目,主要用于娱乐和学习,但同时也可供他人参考和交流。尽管可能在设计和实现上不够完善,但它依然可以作为一个基础,帮助其他开发者理解如何...

    sql 联机手册,SQL,SQ帮助文档

    MSSQL自带的帮助文档,无聊发上来看看,有需要的朋友可以下载下来看看,了解了解 个人觉得有时看看还有所收益!

    sql server 2008\SQL_Server_2008基础教程

    《SQL Server 2008基础教程》是一本专为SQL Server 2008初学者及希望成为数据库管理员的读者准备的指南。无论你是否有数据库背景或是编程经验,这本书都将帮助你掌握SQL Server 2008的核心概念和实用技巧。 首先,...

    人事信息管理系统 For SQL Server 2K ,Demo

    【描述】:“无聊的时候,写着玩玩的!! 第三方组件RXLib 2.75, FastReport” 描述中提到,该系统可能是作者在闲暇时出于兴趣开发的,这表明它可能是一个个人项目,展示了开发者对数据库管理和报表生成技术的应用。...

    sql-repository:[PHP 7] SQL存储库实现

    该库的动机是无聊地编写SQL或使用查询构建器在多个项目中一遍又一遍地执行相同的操作。 SQL存储库使您可以轻松地获取,分页和处理数据,而无需增加开销和遵循良好做法。 目录 产品特点 从一开始就可以使用存储库...

    GalaXQL:谁说 SQL 教程一定很无聊?-开源

    《GalaXQL:SQL教程的新纪元——以开源之力引领学习乐趣》 在信息技术的广阔宇宙中,SQL(Structured Query Language)作为一种基础且强大的数据查询语言,始终扮演着核心角色。然而,传统的SQL教程往往枯燥乏味,...

    无聊建站系统源码下载

    5. **安全机制**:考虑到描述中提到的安全性,系统可能内置了防止SQL注入、XSS攻击等安全防护措施。可能使用了Spring Security或者Apache Shiro来实现用户认证和授权。 6. **模板引擎**:为了支持快速建站,无聊建...

    SQL Mapper:SQL Mapper是一个简单的Java库,可帮助处理JDBC。-开源

    使用该库,您可以专注于如何将SQL查询的结果映射到域对象。 您不需要使用任何xml配置... PS:这个项目是出于娱乐目的而创建的,当我在新工作中感到无聊时才死:)因此,它未经良好的测试,所以任何建议都将对您有所帮助。

    C# sqlserver数据库(2008版本以上)一键生成IBatisNet映射文件 C#对象实体 简单增删改查BLL

    最近做公司的项目自己搭建了一套系统,想了好久决定放弃Entity Framework框架用一下...,因为要码的太多了还是很枯燥很繁琐的重复性工作(说白了就是无聊了);得 干脆写个代码生成器吧,于是乎心血来潮说干就干。

    LINQ to SQL 创建三层多层Web应用系统教程

    ### LINQ to SQL 创建三层多层Web应用系统教程 #### 一、引言 随着.NET 3.5平台的发布,Microsoft引入了LINQ(Language Integrated Query)这一强大的查询技术,它不仅简化了数据访问代码的编写过程,还极大地提高...

    sql优化技术

    在数据库管理领域,SQL(Structured Query Language)是用于管理和处理关系型数据库的强大工具。SQL优化是提高数据库性能的关键环节,尤其对于数据密集型应用来说,它直接影响到系统的响应速度和用户体验。以下是...

    用Powerbuilder搭建的超无聊的电脑销售系统

    本文将深入探讨一个使用PowerBuilder 11.5和SQL Server 2005 Express搭建的“超无聊的电脑销售系统”。虽然这个系统被戏称为“超无聊”,但它的背后蕴含着丰富的技术知识点,对于初学者或希望了解此类系统的人来说...

    SQL Server配置说明

    ### SQL Server 2005 Reporting Services 配置说明 #### 一、配置报表服务器的远程SMTP服务 在实现报表订阅功能之前,首先需要确保报表服务器能够通过远程SMTP服务发送邮件。以下是具体步骤: 1. **验证权限**:...

    本程序是本人从事公寓十多年的经验编写,主要用了C#语言,数据主要是SQL2005,用VS2015编写,主要是为了工作方便的,上班

    本程序是本人从事公寓十多年的经验编写,主要用了C#语言,数据主要是SQL2005,用VS2015编写,主要是为了工作方便的,上班无聊时编写改编的,我相信大家一定会看得懂,简单易学,通俗易懂,连我这个宿管大叔都会编写...

    SQL-Practice:SQL 查询的练习题

    不无聊的电影 解决方案 交换座位 解决方案 连续数 解决方案 体育场人流 解决方案 黑客排名 问题 回答 日本城市 解决方案 员工收入 解决方案 气象观测站 8 解决方案 气象观测站 9 解决方案 超过 75 分 解决方案 ...

    大数据技术2102班上课示例代码.sql

    大数据技术2102班上课示例代码.sql

    GalaXQL:谁说SQL教程一定很无聊?-开源

    GalaXQL是一个有趣SQL教程,其中数据库是以3D呈现的星系。 在您SQL命令创建,修改和销毁天体时,请注意银河系的变化。 还有什么会更有趣?

    无聊时做的一个简单的bbs

    需要关注SQL注入、XSS攻击、CSRF等常见安全问题,并采取相应的防护措施。 8. **部署与运维**:完成开发后,需要将应用部署到服务器,可能用到Apache、Nginx等Web服务器。同时,要考虑日志记录、性能监控、故障排查...

Global site tag (gtag.js) - Google Analytics