akaayy
V2EX  ›  问与答

mysql 中,怎么把一个字段的默认值设置为 id 的 2 倍?

  •  
  •   akaayy · Jul 15, 2014 · 7793 views
    This topic created in 4494 days ago, the information mentioned may be changed or developed.
    id就是自动增加的序号,大家都懂的。
    有办法在设计mysql表的时候把某个int的字段设置为id的2倍吗?

    如果上面思路无法实现,那么在插入数据的时候在php中可以怎么实现呢?

    ----------------------
    这个id的2倍的字段主要是用于排序的,有了这个字段,我就可以精确控制某一篇文章排在指定文章的后面了。 实现这样的功能,还可以有什么好技巧?
    11 replies  •  2018-05-07 17:39:02 +08:00
    skydiver
    skydiver
    Jul 15, 2014❤️1
    1
    让序号递增2不就行了。。为什么要再来一列
    akaayy
    akaayy
    OP
    Jul 15, 2014
    2
    @skydiver 序号id有自己的作用,是索引字段。新的这一列是listorder,排序用的
    sambohuang
    sambohuang
    Jul 15, 2014 via Android
    3
    那就用id排序不就行了
    jsonline
    jsonline
    Jul 15, 2014 via Android
    4
    不要依赖ID啊,会被坑的
    superbear
    superbear
    Jul 16, 2014❤️1
    5
    有没有存文章的create_time呢?用时间排序也可以的啊
    iscraft
    iscraft
    Jul 16, 2014❤️1
    6
    @jsonline 自增id唯一 应该很靠谱吧

    @akaayy last insert id取到后x2然后update 只能先插入 后修改
    三楼sambohuang说的没错啊 如果id唯一 用来控制排序就好
    skydiver
    skydiver
    Jul 16, 2014 via Android❤️1
    7
    我觉得这是个AB问题……
    楼主最好说一下真正是想作成什么功能……应该不需要这么蹩脚的方法实现
    akaayy
    akaayy
    OP
    Jul 16, 2014
    8
    @skydiver
    想实现的功能说了啊,就是精确控制排序。例如这个字段名是list_order,添加新纪录依序默认是0,2,4,6,8,后来我想把8放到0后面,我就改为1。


    @superbear
    用时间排序也行,但是我修改排序就需要把生成时间也改了,非我本意。那么我还是需要新建一个用于排序的字段,这当然也可以解决我的问题。。我只是想用更小的数字来实现。
    caofugui
    caofugui
    Jul 16, 2014
    9
    list_order默认为0,排序值=ID+list_order
    设定list_order可以为负数即可
    superbear
    superbear
    Jul 16, 2014
    10
    @akaayy 大概懂你意思了,要做那种类似置顶的功能,那是得加个字段或者想其他办法来实现
    LittleDust
    LittleDust
    May 7, 2018
    11
    还是没有解决问题啊=。=
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2984 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 12:48 · PVG 20:48 · LAX 04:48 · JFK 07:48
    ♥ Do have faith in what you're doing.