久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MYSQL顯示行號排序、同張表數(shù)據(jù)排序上下進(jìn)行比較的示例分析

125次閱讀
沒有評論

共計(jì) 2889 個字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 MYSQL 顯示行號排序、同張表數(shù)據(jù)排序上下進(jìn)行比較的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

需求

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

思路

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

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

準(zhǔn)備工作

章節(jié)表:

CREATE TABLE `t_chapter` ( `id` varchar(255) NOT NULL COMMENT  主鍵 , `auto_code` varchar(255) NOT NULL COMMENT  編號 , `production_number` varchar(11) NOT NULL COMMENT  作品編號 , `pub_time` datetime DEFAULT NULL COMMENT  發(fā)布時間 , PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

開始

對章節(jié)表根據(jù)發(fā)布時間升序排序并顯示行號

 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ā)布時間排序

關(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 則作品編號為 979 的作品存在斷更,更多條件可以依據(jù)自己業(yè)務(wù)而定

說明:

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

參考博客:

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

需求

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

思路

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

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

準(zhǔn)備工作

章節(jié)表:

CREATE TABLE `t_chapter` ( `id` varchar(255) NOT NULL COMMENT  主鍵 , `auto_code` varchar(255) NOT NULL COMMENT  編號 , `production_number` varchar(11) NOT NULL COMMENT  作品編號 , `pub_time` datetime DEFAULT NULL COMMENT  發(fā)布時間 , PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

開始

對章節(jié)表根據(jù)發(fā)布時間升序排序并顯示行號

 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ā)布時間排序

關(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 則作品編號為 979 的作品存在斷更,更多條件可以依據(jù)自己業(yè)務(wù)而定

說明:

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

以上是“MYSQL 顯示行號排序、同張表數(shù)據(jù)排序上下進(jìn)行比較的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-28發(fā)表,共計(jì)2889字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 荥经县| 瓦房店市| 长丰县| 老河口市| 伊吾县| 丰原市| 山东| 赞皇县| 江西省| 兴和县| 东台市| 本溪市| 师宗县| 永丰县| 竹北市| 郴州市| 伊吾县| 定安县| 广平县| 龙川县| 左贡县| 襄汾县| 六盘水市| 义乌市| 铅山县| 旺苍县| 黄陵县| 襄汾县| 仪征市| 腾冲县| 彩票| 甘谷县| 和顺县| 邯郸县| 丰宁| 金昌市| 封丘县| 广丰县| 镇巴县| 太和县| 潞城市|