美文网首页
MySQL 特殊查询

MySQL 特殊查询

作者: 孙毛毛丶 | 来源:发表于2021-01-31 14:26 被阅读0次

15 分钟分隔数据

SELECT 
         CONCAT(DATE_FORMAT(time, '%Y-%m-%d %H:'),
         FLOOR(DATE_FORMAT(time, '%i') / 15)) AS c,
         count(*) FROM your_table 
WHERE appid = 1097492828 AND 
time BETWEEN '2020-10-16 00:00:00' AND '2020-10-16 23:59:59' AND 
source in ('1','2','3','4','5','6','7')  
group by c  order by time asc ;

按半小时统计

SELECT time, COUNT( * ) AS num 
FROM
    (
    SELECT Duration,
        DATE_FORMAT(
            concat( date( TimeStart ), ' ', HOUR ( TimeStart ), ':', floor( MINUTE ( TimeStart ) / 30 ) * 30 ),
            '%Y-%m-%d %H:%i' 
        ) AS time 
    FROM your_table
    WHERE Flag = 0  AND Duration >= 300 
    ) a 
GROUP BY DATE_FORMAT( time, '%Y-%m-%d %H:%i' ) 
ORDER BY time;

(1)功能:获取某一天的创建用户时间间隔
(2)MySQL相邻两条记录时间差

参考:
https://bugyun.iteye.com/blog/2435908
https://blog.csdn.net/yjgithub/article/details/75433345

SELECT *
FROM
  (SELECT @a:=@a+1 AS aaa,
               two.id,
               two.idfa,
               two.currentsecond,
               two.previoussecond,
               (two.currentsecond - two.previoussecond)/60 AS intervalsecond ,
               TIME
   FROM
     (SELECT one.id,
             one.idfa,
             one.time,
             unix_timestamp(one.time) currentsecond,
             @one.time AS previoussecond, @one.time := unix_timestamp(one.time)
      FROM
        (SELECT *
         FROM mkq_third_log_click
         WHERE appid='1116552647'
           AND SOURCE='chuangqi'
           AND TIME BETWEEN '2019-05-20' AND '2019-05-23'
           AND idfa IN
             ('8CB1E69D-5487-4203-B4E3-AD084F117CEB',
                          '96A643BA-94CD-4B91-8E74-85A38CF776E8',
                          '0A0FA6D1-321B-484E-A92C-5A4DE9D95ECA')
         ORDER BY idfa,TIME) AS one) AS two
   ORDER BY idfa,
            TIME)AS a
 ;

SQL_CALC_FOUND_ROWS使用

在很多分页的程序中都这样写:

SELECT COUNT(*) from table WHERE ......; 查出符合条件的记录总数

SELECT * FROM table WHERE ...... limit M,N;查询当页要显示的数据

这样的语句可以改成:

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE ...... limit M, N;
SELECT FOUND_ROWS();

参考
http://blog.csdn.net/guoguo1980/article/details/1515685

IfNULL使用

1.select IfNULL(qa_real_name,username) 
2.where 后用 ISNULL(svip_expire_time) 

MySQL in 优化

避免使用in 或者 or (or会导致扫表),使用union all
使用UNION ALL:

(select * from article where article_category=2 order by article_id desc limit 5)
UNION ALL 
(select * from article where article_category=3 order by article_id desc limit 5)
orDER BY article_id desc
limit 5

FIND_IN_SET用法

MYSQL列中的数据以逗号隔开

MYSQL FIND_IN_SET (str, strlist) 在strlist中查找str,strlist可以是列名,查找默认是以逗号隔开

相关文章

  • MySQL 特殊查询

    15 分钟分隔数据 按半小时统计 (1)功能:获取某一天的创建用户时间间隔(2)MySQL相邻两条记录时间差 参考...

  • mysql 查询特殊字符问题

    数据库中存在%的还有一些转义字符如: 这种字符我们要查询: 解决办法来了:使用sqlalchemy的orm框架 或...

  • MySQL——连接查询(特殊的多表查询)

    连接查询(将具有管理关系的多个表连接起来进行查询操作) 1. 内连接语法格式:· SELECT 字段名列表 FRO...

  • MySQL学习笔记

    目录 MySQL简介 基本输入查询 创建并使用数据库 SELECT语句 选择特殊行 条件 通配符 选择特殊列 排序...

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • 高性能的索引策略

    MySQL查询基础-查询执行过程 MySQL聚簇索引 MySQL覆盖索引 MySQL索引扫描排序 MySQL冗余和...

  • MySQL学习——查询缓存

    MySQL查询缓存简介 MySQL查询缓存是MySQL将查询返回的完整结果保存在缓存中。当查询命中该缓存,MySQ...

  • Mysql 慢查询日志

    Mysql 慢查询日志 慢查询日志 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中...

  • mysql 查询

    mysql的查询、子查询及连接查询 一、mysql查询的五种子句 where(条件查询)、having(筛选)、g...

  • MySQL 索引及查询优化总结-2018-03-20

    MySQL 索引及查询优化总结 文章《MySQL查询分析》讲述了使用MySQL慢查询和explain命令来定位my...

网友评论

      本文标题:MySQL 特殊查询

      本文链接:https://www.haomeiwen.com/subject/wbduzktx.html