跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

排序的问题,请教高手。

本帖最后由 xviphackl 于 2013-07-30 16:14:18 编辑 在开发过程遇到了一个很纠结的问题。 就是我想把新发表的或在整个内容列表任意的位置的内容,移动到内容列表指定的位置!举个例子: order   id --------------- 4        1 3        2 2        3 1        4 我想把ID为4的数据移动到ID为2的下面。我目前的处理办法是目标ID的ORDER+1(-1)的方式来进行排序,但是,像这种有序的列表,就会出现ORDER相同的值,这个时候,在进行排序最终结果有点出乎意料。 有什么办法能够解决这个问题? 回复讨论(解决方案) order by `order`, id order 相同的按 id 排序 只要你遵守自己的约定,就不会出现 出乎意料 的结果 如,上图的数据,我现在想把role_id为1的数据排到10的上面,但是,结果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 这种问题, 就更改一次SQL语句? 如,上图的数据,我现在想把role_id为1的数据排到10的上面,但是,结果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 这种问题, 就更改一次SQL语句? desc是倒序,由大到小排列,10当然就排到1的前面了,role_id那里用asc 就是一个表里面有很多内容,我们需要把一些自认为很重要的内容通过人为的的干预,让他到指定的位置!!! 没有规则,很自由的让他“上”,“下”移动。给你所说的DISCUZ的排序不同,我们现在考虑的就一个字段,没有类型区分。只有数字的大小来判定这条内容他的位置。 应该是这样,说得比较凌乱。 如,上图的数据,我现在想把role_id为1的数据排到10的上面,但是,结果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 这种问题, 就更改一次SQL语句? desc是倒序,由大到小排列,10当然就排到1的前面了,role_id那里用asc OK ,
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
你说是这样子是吗。 反之,我想把ID为10的排到ID为1的上面,请问该怎么做,不能老是去更改SQL? 如,上图的数据,我现在想把role_id为1的数据排到10的上面,但是,结果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 这种问题, 就更改一次SQL语句? desc是倒序,由大到小排列,10当然就排到1的前面了,role_id那里用asc OK ,
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
你说是这样子是吗。 反之,我想把ID为10的排到ID为1的上面,请问该怎么做,不能老是去更改SQL? 如果你想人为指定,就写个函数,你想让10在1的上面,就传个10进这个函数,显示的时候让10在上面,想让1在上面是同样的道理。就是说,在显示的时候,进行控制。 如,上图的数据,我现在想把role_id为1的数据排到10的上面,但是,结果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 这种问题, 就更改一次SQL语句? desc是倒序,由大到小排列,10当然就排到1的前面了,role_id那里用asc OK ,
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
你说是这样子是吗。 反之,我想把ID为10的排到ID为1的上面,请问该怎么做,不能老是去更改SQL? 如果你想人为指定,就写个函数,你想让10在1的上面,就传个10进这个函数,显示的时候让10在上面,想让1在上面是同样的道理。就是说,在显示的时候,进行控制。 关键是怎么去确定哪个在上面,哪个在下面。这是一个问题,?可以说说你的具体的办法么? 如,上图的数据,我现在想把role_id为1的数据排到10的上面,但是,结果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 这种问题, 就更改一次SQL语句? desc是倒序,由大到小排列,10当然就排到1的前面了,role_id那里用asc OK ,
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
你说是这样子是吗。 反之,我想把ID为10的排到ID为1的上面,请问该怎么做,不能老是去更改SQL? 如果你想人为指定,就写个函数,你想让10在1的上面,就传个10进这个函数,显示的时候让10在上面,想让1在上面是同样的道理。就是说,在显示的时候,进行控制。 关键是怎么去确定哪个在上面,哪个在下面。这是一个问题,?可以说说你的具体的办法么? 这要看你自己定的规则了,你不是要通过人为的干预让“自认为”重要的内容到制定的位置吗?那你得先把规则搞清楚,然后才能根据规则出代码。明白吗?

相关文章