我有一个带有行的表,每个表都有一个“ 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做到这一点?
答案 0 :(得分:2)
如果您唯一的要求是
所以第一个应该是最后一个,依此类推
您可以否定值(如我在评论中所写)。可以这样
$intance = new Class_Example();
$intance->Example1();
$intance->Example2();
但是-这是一个SQL脚本,它将“ update mytable set `Order` = - `Order`
”列中的值从最小到最大,从倒数第二到第二大等等“交换”。
Order
具有窗口功能的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;
答案 1 :(得分:0)