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

2014-07-15 21:59:09 +08:00
 akaayy
id就是自动增加的序号,大家都懂的。
有办法在设计mysql表的时候把某个int的字段设置为id的2倍吗?

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

----------------------
这个id的2倍的字段主要是用于排序的,有了这个字段,我就可以精确控制某一篇文章排在指定文章的后面了。 实现这样的功能,还可以有什么好技巧?
6734 次点击
所在节点    问与答
11 条回复
skydiver
2014-07-15 22:00:29 +08:00
让序号递增2不就行了。。为什么要再来一列
akaayy
2014-07-15 22:01:52 +08:00
@skydiver 序号id有自己的作用,是索引字段。新的这一列是listorder,排序用的
sambohuang
2014-07-15 22:14:52 +08:00
那就用id排序不就行了
jsonline
2014-07-15 22:26:08 +08:00
不要依赖ID啊,会被坑的
superbear
2014-07-16 10:02:25 +08:00
有没有存文章的create_time呢?用时间排序也可以的啊
iscraft
2014-07-16 10:10:30 +08:00
@jsonline 自增id唯一 应该很靠谱吧

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


@superbear
用时间排序也行,但是我修改排序就需要把生成时间也改了,非我本意。那么我还是需要新建一个用于排序的字段,这当然也可以解决我的问题。。我只是想用更小的数字来实现。
caofugui
2014-07-16 15:40:04 +08:00
list_order默认为0,排序值=ID+list_order
设定list_order可以为负数即可
superbear
2014-07-16 16:14:26 +08:00
@akaayy 大概懂你意思了,要做那种类似置顶的功能,那是得加个字段或者想其他办法来实现
LittleDust
2018-05-07 17:39:02 +08:00
还是没有解决问题啊=。=

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

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

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

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

© 2021 V2EX