MySQL 特殊查詢

15 分鐘分隔數(shù)據(jù)

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 ;

按半小時統(tǒng)計

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)功能:獲取某一天的創(chuàng)建用戶時間間隔
(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 ......; 查出符合條件的記錄總數(shù)

SELECT * FROM table WHERE ...... limit M,N;查詢當頁要顯示的數(shù)據(jù)

這樣的語句可以改成:

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 優(yōu)化

避免使用in 或者 or (or會導(dǎo)致掃表),使用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列中的數(shù)據(jù)以逗號隔開

MYSQL FIND_IN_SET (str, strlist) 在strlist中查找str,strlist可以是列名,查找默認是以逗號隔開
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容