MYSQL顯示行號(hào)排序、同張表數(shù)據(jù)排序上下進(jìn)行比較

  • 需求

  1. 需要查詢小說是否有斷更,小說章節(jié)信息表中有發(fā)布時(shí)間:pub_time,如果發(fā)布時(shí)間間隔超過三天就算斷更

  • 思路

    1. 查詢小說章節(jié)信息表,將章節(jié)信息按照發(fā)布時(shí)間排序,加上行號(hào)。生成table1 和table2 信息一樣

    2. left join 關(guān)聯(lián)查詢,table1行號(hào)為 n 與 table2行號(hào)為n+1的數(shù)據(jù)發(fā)布時(shí)間比較,如果存在大于三天則說明斷更

  • 準(zhǔn)備工作

  • 章節(jié)表:

    CREATE?TABLE?`t_chapter`?(??`id`?varchar(255)?NOT?NULL?COMMENT?'主鍵',??`auto_code`?varchar(255)?NOT?NULL?COMMENT?'編號(hào)',??`production_number`?varchar(11)?NOT?NULL?COMMENT?'作品編號(hào)',??`pub_time`?datetime?DEFAULT?NULL?COMMENT?'發(fā)布時(shí)間',??PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8
    • 開始

    1. 對(duì)章節(jié)表根據(jù)發(fā)布時(shí)間升序排序并顯示行號(hào)

    ????????SELECT ????????????t.auto_code?, ????????????t.id?, ????????????t.production_number?, ????????????t.pub_time?, ????????????(@rowNum?:=@rowNum?+?1)?AS?rowNo????????FROM ????????????t_chapter?t?, ????????????(SELECT(@rowNum?:=?0))?b????????WHERE? ???????????t.production_number?=?1414(指定作品)????????ORDER?BY ????????????t.pub_time?ASC

    查詢結(jié)果已經(jīng)按照發(fā)布時(shí)間排序
    MYSQL顯示行號(hào)排序、同張表數(shù)據(jù)排序上下進(jìn)行比較

    • 關(guān)聯(lián)查詢

    ????SELECT ????????count(1)????FROM ????????(????????????SELECT ????????????????t.auto_code?, ????????????????t.id?, ????????????????t.production_number?, ????????????????t.pub_time?, ????????????????(@rowNum?:=@rowNum?+?1)?AS?rowNo????????????FROM ????????????????t_chapter?t?, ????????????????(SELECT(@rowNum?:=?0))?b????????????WHERE ????????????????t.production_number?=?979??? ????????????ORDER?BY ????????????????t.pub_time?ASC ????????)?table1????INNER?JOIN(????????SELECT ????????????t.auto_code?, ????????????t.id?, ????????????t.production_number?, ????????????t.pub_time?, ????????????(@a?:=@a?+?1)?AS?rowNo????????FROM ????????????t_chapter?t?, ????????????(SELECT(@a?:=?0))?b????????WHERE ????????????t.production_number?=?979 ????????ORDER?BY ????????????t.pub_time?ASC ????)?table2?ON?table1.rowNo?+?1?=?table2.rowNo? ????WHERE ????????timestampdiff(DAY?,?table2.pub_time?,?table1.pub_time)?>?3;

    如果查詢count>0則作品編號(hào)為979的作品存在斷更,更多條件可以依據(jù)自己業(yè)務(wù)而定

    說明:

    這里用到了@,最開始我也不知道這是什么東西,然后我搜索mysql行號(hào)查到使用自定義變量(mysql特性)進(jìn)行排序顯示

    參考博客:

    SQL Server查詢行號(hào)
    MYSQL rownum 實(shí)現(xiàn)
    MYSQL 自定義變量使用(推薦)

    • 需求

    1. 需要查詢小說是否有斷更,小說章節(jié)信息表中有發(fā)布時(shí)間:pub_time,如果發(fā)布時(shí)間間隔超過三天就算斷更

  • 思路

    1. 查詢小說章節(jié)信息表,將章節(jié)信息按照發(fā)布時(shí)間排序,加上行號(hào)。生成table1 和table2 信息一樣

    2. left join 關(guān)聯(lián)查詢,table1行號(hào)為 n 與 table2行號(hào)為n+1的數(shù)據(jù)發(fā)布時(shí)間比較,如果存在大于三天則說明斷更

  • 準(zhǔn)備工作

  • 章節(jié)表:

    CREATE?TABLE?`t_chapter`?(??`id`?varchar(255)?NOT?NULL?COMMENT?'主鍵',??`auto_code`?varchar(255)?NOT?NULL?COMMENT?'編號(hào)',??`production_number`?varchar(11)?NOT?NULL?COMMENT?'作品編號(hào)',??`pub_time`?datetime?DEFAULT?NULL?COMMENT?'發(fā)布時(shí)間',??PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8
    • 開始

    1. 對(duì)章節(jié)表根據(jù)發(fā)布時(shí)間升序排序并顯示行號(hào)

    ????????SELECT ????????????t.auto_code?, ????????????t.id?, ????????????t.production_number?, ????????????t.pub_time?, ????????????(@rowNum?:=@rowNum?+?1)?AS?rowNo????????FROM ????????????t_chapter?t?, ????????????(SELECT(@rowNum?:=?0))?b????????WHERE? ???????????t.production_number?=?1414(指定作品)????????ORDER?BY ????????????t.pub_time?ASC

    查詢結(jié)果已經(jīng)按照發(fā)布時(shí)間排序
    MYSQL顯示行號(hào)排序、同張表數(shù)據(jù)排序上下進(jìn)行比較

    • 關(guān)聯(lián)查詢

    ????SELECT ????????count(1)????FROM ????????(????????????SELECT ????????????????t.auto_code?, ????????????????t.id?, ????????????????t.production_number?, ????????????????t.pub_time?, ????????????????(@rowNum?:=@rowNum?+?1)?AS?rowNo????????????FROM ????????????????t_chapter?t?, ????????????????(SELECT(@rowNum?:=?0))?b????????????WHERE ????????????????t.production_number?=?979??? ????????????ORDER?BY ????????????????t.pub_time?ASC ????????)?table1????INNER?JOIN(????????SELECT ????????????t.auto_code?, ????????????t.id?, ????????????t.production_number?, ????????????t.pub_time?, ????????????(@a?:=@a?+?1)?AS?rowNo????????FROM ????????????t_chapter?t?, ????????????(SELECT(@a?:=?0))?b????????WHERE ????????????t.production_number?=?979 ????????ORDER?BY ????????????t.pub_time?ASC ????)?table2?ON?table1.rowNo?+?1?=?table2.rowNo? ????WHERE ????????timestampdiff(DAY?,?table2.pub_time?,?table1.pub_time)?>?3;

    如果查詢count>0則作品編號(hào)為979的作品存在斷更,更多條件可以依據(jù)自己業(yè)務(wù)而定

    說明:

    這里用到了@,最開始我也不知道這是什么東西,然后我搜索mysql行號(hào)查到使用自定義變量(mysql特性)進(jìn)行排序顯示

    相關(guān)文章:

    c語言中冒泡排序、插入排序、選擇排序算法比較

    c語言中冒泡排序、插入排序、選擇排序算法比較

    相關(guān)視頻:

    c語言中冒泡排序、插入排序、選擇排序算法比較

    ? 版權(quán)聲明
    THE END
    喜歡就支持一下吧
    點(diǎn)贊5 分享