概述
一个有趣的 SQL 查询
一个朋友有这样一个SQL查询需求:
有一个登录表(tmp_test),包含用户ID(uid)和登录时间(login_time)。表结构如下:
*************************** 1. row ***************************Field: uid
Type:int(10) unsignedNull: NOKey: MULDefault: NULLExtra:*************************** 2. row ***************************Field: login_time
Type:timestamp
Null: NOKey: MULDefault: 0000-00-00 00:00:00Extra:
问如何查询出所有在某一段时间内(如:2012-1-1至2012-1-17)连续7天都有登录的用户。
在写这个SQL时,发现一些很有意思东西,也许对大家写SQL有帮助,因此记录一下。
- 基本思路 Loop Join
首先想到的思路是一个类似于Loop Join的方法:
A. 取出2012-1-1到2012-1-11的每一条记录.
B. 对取出的每一条记录,再去表中查询这个用户的接下来6天的记录。
如果总数为6条记录,则满足连续7天的条件
- Range Join
Loop Join的思路可以通过一个Join语句来实现。姑且称之为Range Join。通常join时,使用的都是
等值join. 如果join列的值是唯一的,那么就是左表的一条记录对应右表的一条记录。而Range Join
中,左表的一行数据对应右表的一
最后
以上就是还单身大米为你收集整理的mysql查询连续7天_一个有趣的 SQL 查询(查询7天连续登陆)的全部内容,希望文章能够帮你解决mysql查询连续7天_一个有趣的 SQL 查询(查询7天连续登陆)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复