postgresql的一个简单的sql
来源:互联网 发布:c语言百马百担程序图 编辑:程序博客网 时间:2024/06/05 05:39
首先是有两个表,一个是用户信息表,一个是用户登录日志表,用户信息表中有一个字段upgrade_time,是一个同步数据时间,每天如果用户登录,会将当前时间与upgrade_time时间去做比较,如果时间差在一天以内,那么不做同步,超过一天的话调用接口同步会员数据,并将upgrade_time更新成同步数据的时间。然后是用户登录日志表,这个表很简单,用户登录一次,就会插入一条数据,并记录当前登录的时间。
因此根据上述两个表产生了一个需求,查询出所有无法同步最新数据的用户。
那么我们来分析这个需求,很简单无法同步数据就意味着,用户表中的upgrade_time比用户登录日志表中的当前用户的最近登录时间,至少小了一天以上,因为我们是一天同步一次嘛!所以只要找出这批,最近登录时间大于upgrade_time超过1天以上的用户就可以满足需求了。
这是t_mem_member_eclub用户信息表
这是t_store_member_login_log用户登录日志表
那么这个sql怎么写?首先我们要拿到每个用户的最近的登录时间。
SELECT MAX (login_time) login_time,member_idFROM t_store_member_login_logGROUP BY member_id
OK,然后是将这个用户最近的登录时间表与用户信息表关联起来。
SELECT eclub.member_id, eclub.upgrade_time, log.login_timeFROM t_mem_member_eclub eclubLEFT JOIN ( SELECT MAX (login_time) login_time,member_id FROM t_store_member_login_log GROUP BY member_id ) log ON eclub.member_id = log.member_id
关联起来之后,最后一步就是比较upgrade_time和login_time了
SELECT eclub.member_id, eclub.upgrade_time, log.login_timeFROM t_mem_member_eclub eclubLEFT JOIN ( SELECT MAX (login_time) login_time,member_id FROM t_store_member_login_log GROUP BY member_id ) log ON eclub.member_id = log.member_idWHERE eclub.upgrade_time::timestamp + '1 day' < log.login_time;
至此,我们需要的结果已经查询出来了。
1 0
- postgresql的一个简单的sql
- PostgreSQL简单的动态SQL语句
- 关于postgreSQL版本的一个简单测试
- 一个简单的sql
- postgreSQL的sql语法
- 一个简单的SQL题
- 一个简单的sql语句
- 一个简单的SQL题目
- 一个简单的SQL注入
- 一个不算简单的sql
- Postgresql简单的导入导出
- postgresql游标的简单使用
- postgresql pg_rman的简单使用
- Postgresql:动态sql的例子
- postgreSQL的一些sql语句
- PostgreSQL的SQL命令整理
- postgresql中隐秘的sql
- postgresql 查看锁的sql
- haproxy 基本维护命令和监控统计命令
- FileWriter打开文件固定套路
- Android Studio编译大工程报错:java.exe'' finished with non-zero exit value 1
- POJ 2352 (树状数组)
- 基于PHP的短信接口调用示例代码模板
- postgresql的一个简单的sql
- 如何使用Eclipse打开已有工程听语音
- php 使用redis锁限制并发访问类
- Message Flood
- JDK环境搭建心得
- 【华为练习题】 求最大凸多边形(高级)
- 使用Word Embedding构造文本摘要系
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 【POJ1487】——Single-Player Games(高斯消元)