使用PHP从表MySQL中获得反向行“订单”值

时间:2019-03-15 20:20:26

标签: php mysql

我有一个带有行的表,每个表都有一个“ order”值。现在,我有500行,并且需要反转“顺序”值。因此,第一个应该是最后一个,依此类推。

例如:

Name   |  Order
-------------------
Row 1  |    1
Row 2  |    4
Row 3  |    5
Row 4  |    8
Row 5  |    12
Row 6  |    20

现在应该是:

Name   |  Order
-------------------
Row 1  |    20
Row 2  |    12
Row 3  |    8
Row 4  |    5
Row 5  |    4
Row 6  |    1

我只需要这样做一次,因此性能并不重要。如何使用PHP做到这一点?

2 个答案:

答案 0 :(得分:2)

如果您唯一的要求是

  

所以第一个应该是最后一个,依此类推

您可以否定值(如我在评论中所写)。可以这样

$intance = new Class_Example();
$intance->Example1();
$intance->Example2();

但是-这是一个SQL脚本,它将“ update mytable set `Order` = - `Order` ”列中的值从最小到最大,从倒数第二到第二大等等“交换”。

Order

Demo

具有窗口功能的MySQL 8使其更简单:

create table tmp_asc(
  i int auto_increment primary key,
  o int,
  index (o)
);

insert into tmp_asc(o)
  select `Order` from mytable order by `Order` asc;

create table tmp_desc(
  i int auto_increment primary key,
  o int,
  index (o)
);

insert into tmp_desc(o)
  select `Order` from mytable order by `Order` desc;

update mytable t
join tmp_asc on tmp_asc.o = t.Order
join tmp_desc on tmp_desc.i = tmp_asc.i
set t.Order = tmp_desc.o;

drop table tmp_asc, tmp_desc;

Demo

答案 1 :(得分:0)

使用PHP“ rsort()”函数。它将对数组从最大值到最小值进行排序。

然后将其保存到您的数据库中。

http://php.net/manual/en/function.rsort.php