日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql查询每个id的前10条数据_解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据...

發布時間:2025/3/12 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql查询每个id的前10条数据_解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們都知道,各種主流的社交應用或者閱讀應用,基本都有列表類視圖,并且都有滑到底部加載更多這一功能, 對應后端就是分頁拉取數據。

好處不言而喻,一般來說,這些數據項都是按時間倒序排列的,用戶只關心最新的動態,而不關心幾個月甚至幾年前消息,所以后端返回給客戶端的數據是不會一次性傳遞全部內容的(不僅耗費流量,而且還給服務器帶來巨大壓力)。

舉個例就說MySQL,它已經給我們提供了相應的語句來支持這一功能,那就是limit關鍵字。

比如我要拉取一個消息表中用戶id為1的前10條最新數據,SQL語句如下:

select uid, content, time

from message

where uid = 1

order by time desc

limit 0, 10

1

2

3

4

5

其中,message是表名,查詢3個字段uid,content(消息詳情內容),time(消息發送時間),用order by time desc對數據進行時間倒序排序,一般time的數據類型可以用datetime(格式:yyyy-MM-dd HH:mm:ss)。

然后limit 0, 10表示將查詢結果限制在從下標為0開始的10行數據。

比如你只查詢第8行這一行數據,就是limit 7, 1,形式化描述就是:

limit [index], [count]

順理成章地,我們會自然想到,當用戶加載更多時,我們就將上述SQL語句改為:

select uid, content, time

from message

where uid = 1

order by time desc

limit 10, 10

1

2

3

4

5

09行數據我們已經查詢過了,接下來就是查詢1019行數據,以此類推。

所以,實際的服務端Web程序中,我們可以在編程時把index這個值作為變量,每次加載更多時,就改變index為列表數據項的大小,描述為:

index = listSize

每加載一次新數據,listSize就會增大,下一次查詢從index = listSize這個位置開始即可。

MySQL分頁就搞定了,但是在實際應用中,我們不得不面臨一個數據重復的問題。

舉個例子,我第一頁有10條數據,在加載第二頁新10條數據時,正好總表里增加了n條新數據,這樣第二頁的前n條數據就會與第一頁的后n條數據重復。

如果正確理解這個意思,那么大家就明白當這個n=10時,第二頁數據就會和已經加載的第一頁數據完全一樣。

然而第一頁數據已經在客戶端UI填充完畢了,我們不可能回頭重查,這不僅影響程序效率,而且用戶體驗也很不好。

為了避免這個問題,我們利用時間來控制查詢結果。第1頁到第n頁的分頁數據,其實都是在某個時間點之前的內容,這個時間點之后新插入的數據我們不管。

所以,SQL語句改為:

select uid, content, time

from message

where uid = 1 and time < time_point

order by time desc

limit listSize, 10

1

2

3

4

5

這個time_point在拉取第一頁數據之前就要確定下來,并且和listSize一樣,都是服務端程序代碼中的變量,此處只是個形式化描述。

當前時間可以通過相應的代碼來獲取系統時間(比如Java中的Calendar或者Date類),也可以直接通過SQL語句的now函數獲取系統時間:

select NOW()

1

查詢結果為(這是我此時寫文的時間):

‘2017-01-19 16:07:46’

所以,time_point實際上也就是形如上的一個時間字符串而已,在MySQL中,時間字符串是可以直接比較大小的。

如果你不喜歡字符串比較或者有其它特殊需求,那么你可以將MySQL中的datetime數據類型轉換為整數,這樣寫:

……

where uid = 1 and (time + 0) < time_point_integer

……

1

2

3

datetime通過加0處理后,會轉化為形如20170119160746這樣的長整型,所以時間點變量也不能是字符串了,而是經過處理后的整數(在Java中對應long數據類型)。

剛才的時間查詢語句即改為:

select NOW() + 0

1

轉換成整數有什么好處呢?

比如說,有需求不是定量的分頁拉取,而是按時間段拉取,若我需要過去2小時內的數據,就可以通過整數之間的運算來實現,這里不作贅述。

最后的處理:

time_point和listSize這兩個變量肯定是需要重置的。

那就是在用戶回到列表頂部重新刷新整個列表時,時間點就需要刷新,listSize置為零。

在實際應用中,當用戶還在慢慢向下瀏覽過去的數據時,其實已經有大量新數據已經插入數據庫了,正如上文提到的,這時肯定不能立即加載,所以人性化的處理就是,在適當的地方給予用戶提示,比如“有n條新動態,點擊查看”,用戶點擊后,就會回到頂部,刷新相應的變量,重新加載整個列表。

---------------------

作者:針葉

來源:CSDN

原文:https://blog.csdn.net/ysy950803/article/details/54617223

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

我們都知道,各種主流的社交應用或者閱讀應用,基本都有列表類視圖,并且都有滑到底部加載更多這一功能, 對應后端就是分頁拉取數據。

好處不言而喻,一般來說,這些數據項都是按時間倒序排列的,用戶只關心最新的動態,而不關心幾個月甚至幾年前消息,所以后端返回給客戶端的數據是不會一次性傳遞全部內容的(不僅耗費流量,而且還給服務器帶來巨大壓力)。

舉個例就說MySQL,它已經給我們提供了相應的語句來支持這一功能,那就是limit關鍵字。

比如我要拉取一個消息表中用戶id為1的前10條最新數據,SQL語句如下:

select uid, content, time

from message

where uid = 1

order by time desc

limit 0, 10

1

2

3

4

5

其中,message是表名,查詢3個字段uid,content(消息詳情內容),time(消息發送時間),用order by time desc對數據進行時間倒序排序,一般time的數據類型可以用datetime(格式:yyyy-MM-dd HH:mm:ss)。

然后limit 0, 10表示將查詢結果限制在從下標為0開始的10行數據。

比如你只查詢第8行這一行數據,就是limit 7, 1,形式化描述就是:

limit [index], [count]

順理成章地,我們會自然想到,當用戶加載更多時,我們就將上述SQL語句改為:

select uid, content, time

from message

where uid = 1

order by time desc

limit 10, 10

1

2

3

4

5

09行數據我們已經查詢過了,接下來就是查詢1019行數據,以此類推。

所以,實際的服務端Web程序中,我們可以在編程時把index這個值作為變量,每次加載更多時,就改變index為列表數據項的大小,描述為:

index = listSize

每加載一次新數據,listSize就會增大,下一次查詢從index = listSize這個位置開始即可。

MySQL分頁就搞定了,但是在實際應用中,我們不得不面臨一個數據重復的問題。

舉個例子,我第一頁有10條數據,在加載第二頁新10條數據時,正好總表里增加了n條新數據,這樣第二頁的前n條數據就會與第一頁的后n條數據重復。

如果正確理解這個意思,那么大家就明白當這個n=10時,第二頁數據就會和已經加載的第一頁數據完全一樣。

然而第一頁數據已經在客戶端UI填充完畢了,我們不可能回頭重查,這不僅影響程序效率,而且用戶體驗也很不好。

為了避免這個問題,我們利用時間來控制查詢結果。第1頁到第n頁的分頁數據,其實都是在某個時間點之前的內容,這個時間點之后新插入的數據我們不管。

所以,SQL語句改為:

select uid, content, time

from message

where uid = 1 and time < time_point

order by time desc

limit listSize, 10

1

2

3

4

5

這個time_point在拉取第一頁數據之前就要確定下來,并且和listSize一樣,都是服務端程序代碼中的變量,此處只是個形式化描述。

當前時間可以通過相應的代碼來獲取系統時間(比如Java中的Calendar或者Date類),也可以直接通過SQL語句的now函數獲取系統時間:

select NOW()

1

查詢結果為(這是我此時寫文的時間):

‘2017-01-19 16:07:46’

所以,time_point實際上也就是形如上的一個時間字符串而已,在MySQL中,時間字符串是可以直接比較大小的。

如果你不喜歡字符串比較或者有其它特殊需求,那么你可以將MySQL中的datetime數據類型轉換為整數,這樣寫:

……

where uid = 1 and (time + 0) < time_point_integer

……

1

2

3

datetime通過加0處理后,會轉化為形如20170119160746這樣的長整型,所以時間點變量也不能是字符串了,而是經過處理后的整數(在Java中對應long數據類型)。

剛才的時間查詢語句即改為:

select NOW() + 0

1

轉換成整數有什么好處呢?

比如說,有需求不是定量的分頁拉取,而是按時間段拉取,若我需要過去2小時內的數據,就可以通過整數之間的運算來實現,這里不作贅述。

最后的處理:

time_point和listSize這兩個變量肯定是需要重置的。

那就是在用戶回到列表頂部重新刷新整個列表時,時間點就需要刷新,listSize置為零。

在實際應用中,當用戶還在慢慢向下瀏覽過去的數據時,其實已經有大量新數據已經插入數據庫了,正如上文提到的,這時肯定不能立即加載,所以人性化的處理就是,在適當的地方給予用戶提示,比如“有n條新動態,點擊查看”,用戶點擊后,就會回到頂部,刷新相應的變量,重新加載整個列表。

---------------------

作者:針葉

來源:CSDN

原文:https://blog.csdn.net/ysy950803/article/details/54617223

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的mysql查询每个id的前10条数据_解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人污网站 | av免费的 | 精品欧美激情精品一区 | av在线成人 | 校园春色 亚洲色图 | 亚洲天堂男人 | 99精品久久久久久久婷婷 | 天堂av网址 | 最新日韩在线视频 | 国产cao| 一区不卡av | 五月婷婷丁香 | 户外少妇对白啪啪野战 | 亚洲大胆人体 | 青草超碰 | 综合伊人 | 日韩欧美视频在线播放 | 精品久久精品久久 | 日本一本高清视频 | 伊人影院综合在线 | 色爱亚洲 | 色婷婷狠狠操 | 男人天堂视频在线观看 | 97超碰网 | 亚洲91精品| 国产毛片99| 亚洲精品中文字幕乱码三区 | 婷婷色在线观看 | 国产午夜精品一区二区理论影院 | 毛片视屏 | 亚洲羞羞| 色欧美视频 | 一区二区三区四区五区av | 欧美aaaaa | 国产精品一二三区在线观看 | 少妇极品熟妇人妻无码 | 久久深夜视频 | 久久精品久久久 | 成年人免费小视频 | 日本精品99 | 日韩精品中文字幕在线观看 | 国产精品久久久久高潮 | 黄色大片儿.| 亚洲福利一区二区三区 | 97在线精品视频 | 欧美 日韩 国产 一区二区三区 | 女同av在线| 成人性生交大片免费看中文 | 日韩大尺度在线观看 | 另类天堂网| 欧美一级不卡 | 国产剧情av在线播放 | 播五月婷婷 | 久久视频精品在线 | 成人在线观看一区 | 成品短视频泡芙 | 成年人在线视频免费观看 | 国产成人在线视频观看 | 亚洲AV无码乱码国产精品色欲 | 91精品国产综合久久久蜜臀 | 第一福利视频 | 国产一区二区高清 | 2018av在线 | 国产一区91精品张津瑜 | 久久久精品人妻一区二区三区 | 国产精品久久久久久久久久东京 | 人妻少妇偷人精品无码 | 日本中文字幕视频 | 97国产成人 | 3d动漫精品啪啪一区二区下载 | 日韩电影在线观看一区 | 夜夜骚视频 | chinesepron hd videos国产91 | 婷婷色一区二区三区 | 天天视频黄色 | 九九视频免费 | 极品销魂美女一区二区 | 中文字幕一区二区人妻 | 欧洲av一区二区三区 | 亚洲色偷偷综合亚洲av伊人 | 福利在线视频观看 | 欧美一区二区三区观看 | 蜜桃精品在线观看 | 黄色在线小视频 | 老子影院午夜伦不卡大全 | 一区二区三区 欧美 | 超碰免费人人 | 毛片网站在线播放 | www.com在线观看 | 欧美高清在线 | 欧美人与性动交ccoo | 福利一区在线 | 成人 黄 色 免费播放 | 密臀av在线播放 | 精品久久久久久久 | 性视频在线播放 | 日韩毛片网 | 人人天天夜夜 | 欧美黑人性xxx猛交 少妇无套内谢久久久久 |