如何从数据库中查找最近的一条手机验证码

来源:互联网 发布:中小企业网络拓扑图 编辑:程序博客网 时间:2024/05/29 16:40

一般web开发处理手机验证码功能时,会把验证码存放数据库。因为同一个手机可能会多次接收到验证码,所以数据库中可能存在同一个手机号的多条记录。

这个时候往往有个需求是取出最近的那条记录。

方法很多,比如可以用序列作为主键,然后用max去最大的序列号。还有一种方法是记录插入时间字段,取出时根据时间找最新的一条记录。这里要说的就是这种方法。

假设数据表名为tb_phone_code,没有主键,三个字段,手机号,验证码,插入时间

这里写图片描述

如上图,同一个手机号有多条验证码,时间不同,如果以手机号为条件查询,会找到多条记录,如果只要最新的一条,sql语句如下:

select y2.* from tb_phone_code y2 inner join (select max(INSERT_TIME) y from tb_phone_code where PHONE = '159********') tb2 on y2.insert_time = tb2.y where y2.phone='159********';

我把手机号屏蔽掉了。解释下这条语句。可以拆分下,内层有个sql:

select max(INSERT_TIME) y from tb_phone_code where PHONE = '159********'

这句是用手机号为条件,找时间最近的记录,返回INSERT_TIME字段。然后给它起个别名叫tb2,接着用这个tb2和外层的sql做个inner join。

外层的sql,筛选条件是手机号和内层sql筛选出来的时间。

0 0
原创粉丝点击