V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
jerryge
V2EX  ›  MySQL

查询数据在表中的位置

  •  
  •   jerryge · 2014-06-19 00:19:10 +08:00 · 3149 次点击
    这是一个创建于 3802 天前的主题,其中的信息可能已经有所发展或是发生改变。
    mysql数据库假如描述人的一张表中有age=1,age=3,age=4,age=5,age=7,这样五行数据,我应该怎么查询才能知道age=4这条数据前面还有几条数据,或者说怎么知道offset的值。其实我是在做一个数据同步,比如我今天备份到了age=4,我明天知道应该从age=5这条开始备份,那我就需要知道offset的值。
    多谢了!!
    7 条回复    2014-06-19 01:44:08 +08:00
    Livid
        1
    Livid  
    MOD
       2014-06-19 00:21:35 +08:00 via iPhone
    select count(*) from tbl where age <= 4
    jerryge
        2
    jerryge  
    OP
       2014-06-19 00:28:49 +08:00
    @Livid age=3,age=5,age=4,age=1,age=7 万一是这样的呢。当然我可以设个ID字段是递增的。多谢!
    Mutoo
        3
    Mutoo  
       2014-06-19 00:31:36 +08:00
    @jerryge select count(*) from tbl where age <= 4 order by age
    xiandao7997
        4
    xiandao7997  
       2014-06-19 00:35:29 +08:00 via Android
    @jerryge 这个假设本身就是不成立的,以前从别处看过,数据库的数学基础就是集合论,而一个集合里的数据是无序的。
    以前做项目的时候也遇到过 SELECT * 选出的结果不是按 id 递增的顺序来显示的,DBA说如果一定要按顺序显示,还是加一个 sort by 保险。
    回到你的需求,如果需要根据一个数据作 offset 来备份,而 id 又不一定有序(不递增的情况下), 那可以用一个字段保存时间戳,根据时间总不会有什么错的。
    jerryge
        5
    jerryge  
    OP
       2014-06-19 01:22:34 +08:00
    @xiandao7997 嗯,是我自找麻烦。
    hjse7en
        6
    hjse7en  
       2014-06-19 01:28:30 +08:00
    建议加个字段,保存时间
    jerryge
        7
    jerryge  
    OP
       2014-06-19 01:44:08 +08:00
    @hjse7en 嗯,其实有ID,有创建时间,更新时间。我就是作死问一下。多谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4579 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:00 · PVG 18:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.