mysql实现查询最接近的记录数据示例
本文实例讲述了mysql实现查询最接近的记录数据。分享给大家供大家参考,具体如下:
查询场景:现在的需求是查询年龄最接近20岁的用户,获取前5个
我现在的数据库记录用户年龄的字段记录格式是"1995-05-20",字段名称birthday
解决思路:
1.首先查询时转换成用户年龄
日期格式转年龄的方法:
(1)当前年份 - 日期格式中的年份
date_format(now(), '%Y') - from_unixtime(unix_timestamp(birthday), '%Y')
(2)当前年份 - 日期格式中的年份(获取方法不同)
date_format(now(), '%Y') - year(birthday)
2.通过order by asb()
排序获取最接近的数据
完整的语句:
SELECT (date_format(now(), '%Y') - year(birthday)) as age FROM user WHERE is_anchor = 1 ORDER BY abs(20 - age) limit 0,5
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》
希望本文所述对大家MySQL数据库计有所帮助。
相关推荐
-
SQL Server数据库按百分比查询出表中的记录数
SQL Server数据库查询时,能否按百分比查询出记录的条数呢?答案是肯定的.本文我们就介绍这一实现方法. 实现该功能的代码如下: create procedure pro_topPercent ( @ipercent [int] =0 --默认不返回 ) as begin select top (@ipercent ) percent * from books end 或 create procedure pro_topPercent ( @ipercent [int] =0 ) as be
-
sql 查询记录数结果集某个区间内记录
以查询前20到30条为例,主键名为id 方法一: 先正查,再反查 select top 10 * from (select top 30 * from tablename order by id asc) A order by id desc 方法二: 使用left join select top 10 A.* from tablename A left outer join (select top 20 * from tablename order by id asc) B on A.id =
-
关于关系数据库如何快速查询表的记录数详解
前言 在数据库中,很多人员习惯使用SELECT COUNT(*) .SELECT COUNT(1) .SELECT COUNT(COL)来查询一个表有多少记录,对于小表,这种SQL的开销倒不是很大,但是对于大表,这种查询表记录数的做法就是一个非常消耗资源了,而且效率很差.下面介绍一下SQL Server. Oracle.MySQL中如何快速获取表的记录数. SQL SERVER 数据库 在SQL Server数据库中, 对象目录视图sys.partitions中有一个字段rows会记录表的记录数
-
mysql实现查询最接近的记录数据示例
本文实例讲述了mysql实现查询最接近的记录数据.分享给大家供大家参考,具体如下: 查询场景:现在的需求是查询年龄最接近20岁的用户,获取前5个 我现在的数据库记录用户年龄的字段记录格式是"1995-05-20",字段名称birthday 解决思路: 1.首先查询时转换成用户年龄 日期格式转年龄的方法: (1)当前年份 - 日期格式中的年份 date_format(now(), '%Y') - from_unixtime(unix_timestamp(birthday), '%Y')
-
Mysql将查询结果集转换为JSON数据的实例代码
Mysql将查询结果集转换为JSON数据 前言学生表学生成绩表查询单个学生各科成绩(转换为对象JSON串并用逗号拼接)将单个学生各科成绩转换为数组JSON串将数组串作为value并设置key两张表联合查询(最终SQL,每个学生各科成绩)最终结果 前言 我们经常会有这样一种需求,一对关联关系表,一对多的关系,使用一条sql语句查询两张表的所有记录,例:一张学生表,一张学生各科成绩表,我们想要用一条SQL查询出每个学生各科成绩: 学生表 CREATE TABLE IF NOT EXISTS `stu
-
MySQL中查询、删除重复记录的方法大全
前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as count from user_table group by title having count>1; SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Titl
-
mysql中查询字段为null的数据navicat问题
目录 mysql查询字段为null的数据navicat mysql中字段为空,null值遇到坑了 解决办法 总结 mysql查询字段为null的数据navicat 查询数据为null的数据varchar字段 默认为(null)所以查询的语句是 select * from cases where name is null 查询字段为null select * frim cases where name is not null 查询字段不为null mysql中字段为空,null值遇到
-
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
本文实例讲述了Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法.分享给大家供大家参考,具体如下: demo.py(查询,取出一条数据,fetchone): from pymysql import * def main(): # 创建Connection连接 conn = connect(host='localhost',port=3306,user='root',password='mysql',database='jing_do
-
Mysql子查询IN中使用LIMIT应用示例
这两天项目里出了一个问题,LIMIT使用后报错. 需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料申请表,要求是读出申请表中哪些人申请哪些物料 于是我先是这样写的: 复制代码 代码如下: SELECT infor.name,infor.phone,infor.add, mconfig.mname,mapply.acount,from_unixtime(mapply.atime,'%Y-%m-%d') as 'atime' FROM mapply right
-
数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
Oracle查询结果集,随机排序 复制代码 代码如下: select * from table1 order by dbms_random.value(); MySQL随机查询出一条记录: 复制代码 代码如下: -- 下面的查询语句效率高,不要使用 SELECT * FROM table1 ORDER BY rand() LIMIT 1 来查询 SELECT * FROM table1 WHERE id=(SELECT id FROM table1 ORDER BY rand() LIMIT 1
-
mysql随机查询若干条数据的方法
在mysql中查询5条不重复的数据,使用以下: 复制代码 代码如下: SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了.但是真正测试一下才发现这样效率非常低.一个15万余条的库,查询5条数据,居然要8秒以上搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据. 复制代码 代码如下: SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX
-
mysql实现查询数据并根据条件更新到另一张表的方法示例
本文实例讲述了mysql实现查询数据并根据条件更新到另一张表的方法.分享给大家供大家参考,具体如下: 原本的数据库有3张表 travel_way :旅游线路表,存放线路的具体信息 traveltag :线路标签表,存放线路目的地等信息 tagrelation:标签对应表,存放线路和目的地的对应关系 因为业务逻辑的改变,现在要把它们合并为一张表,把traveltag中的目的地信息插入到travel_way中. 首先获取到所有线路对应的目的地,以线路ID分组,合并目的地到一行,以逗号分隔. 复制代码
-
Mysql查询最近一条记录的sql语句(优化篇)
下策--查询出结果后将时间排序后取第一条 select * from a where create_time<="2017-03-29 19:30:36" order by create_time desc limit 1 这样做虽然可以取出当前时间最近的一条记录,但是一次查询需要将表遍历一遍,对于百万以上数据查询将比较费时:limit是先取出全部结果,然后取第一条,相当于查询中占用了不必要的时间和空间:还有如果需要批量取出最近一条记录,比方说:"一个订单表,有用户,订
随机推荐
- JS模拟面向对象全解(一、类型及传递)
- 详解hashCode()和equals()的本质区别和联系
- javascript 模拟点击广告
- JavaScript DOM事件(笔记)
- php图像处理函数大全(推荐收藏)
- md5 16位二进制与32位字符串相互转换示例
- Python 专题二 条件语句和循环语句的基础知识
- ES5 ES6中Array对象去除重复项的方法总结
- 在Python中处理日期和时间的基本知识点整理汇总
- 关于CKeditor的非主流个性应用的设置
- java 使用URLDecoder和URLEncoder对中文进行处理
- 详解springMVC两种方式实现多文件上传及效率比较
- Chcp 显示活动控制台代码页数量,或更改该控制台的活动控制台代码页
- Android中使用ViewFlipper进行手势切换实例
- jquery日历插件datepicker用法分析
- 如何说服企业上网
- 神盾加密解密教程(二)PHP 神盾解密
- React Native日期时间选择组件的示例代码
- Centos7中添加、删除Swap交换分区的方法
- Java中实现简单的Excel导出