查询数据在表中的位置

2014-06-19 00:19:10 +08:00
 jerryge
mysql数据库假如描述人的一张表中有age=1,age=3,age=4,age=5,age=7,这样五行数据,我应该怎么查询才能知道age=4这条数据前面还有几条数据,或者说怎么知道offset的值。其实我是在做一个数据同步,比如我今天备份到了age=4,我明天知道应该从age=5这条开始备份,那我就需要知道offset的值。
多谢了!!
3026 次点击
所在节点    MySQL
7 条回复
Livid
2014-06-19 00:21:35 +08:00
select count(*) from tbl where age <= 4
jerryge
2014-06-19 00:28:49 +08:00
@Livid age=3,age=5,age=4,age=1,age=7 万一是这样的呢。当然我可以设个ID字段是递增的。多谢!
Mutoo
2014-06-19 00:31:36 +08:00
@jerryge select count(*) from tbl where age <= 4 order by age
xiandao7997
2014-06-19 00:35:29 +08:00
@jerryge 这个假设本身就是不成立的,以前从别处看过,数据库的数学基础就是集合论,而一个集合里的数据是无序的。
以前做项目的时候也遇到过 SELECT * 选出的结果不是按 id 递增的顺序来显示的,DBA说如果一定要按顺序显示,还是加一个 sort by 保险。
回到你的需求,如果需要根据一个数据作 offset 来备份,而 id 又不一定有序(不递增的情况下), 那可以用一个字段保存时间戳,根据时间总不会有什么错的。
jerryge
2014-06-19 01:22:34 +08:00
@xiandao7997 嗯,是我自找麻烦。
hjse7en
2014-06-19 01:28:30 +08:00
建议加个字段,保存时间
jerryge
2014-06-19 01:44:08 +08:00
@hjse7en 嗯,其实有ID,有创建时间,更新时间。我就是作死问一下。多谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/118279

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX