更新行序列

时间:2011-07-18 07:56:16

标签: mysql pseudocode multirow

我有一张桌子sites,基本上是一个旅行推销员的问题。我的老板想要从列表中选择一堆网站,然后手动将它们排序为访问顺序。我找了similar questions,但他们没有针对MySQL,那些that were没有为我的情况提供合理的解决方案。我没有在大学做过计算机科学,所以希望这对你们中的一些人来说是件好吃的东西。

我想做类似下面的伪代码:

UPDATE sites SET run_order=0 WHERE selected='false';
UPDATE sites SET run_order=AUTO_SEQUENCE(DESC FROM 6) WHERE site_id=SEQUENCE(23,17,9,44,2,14);

后者将具有与以下相同的效果:

UPDATE sites SET run_order=6 WHERE site_id=23;
UPDATE sites SET run_order=5 WHERE site_id=17;
UPDATE sites SET run_order=4 WHERE site_id=9;
UPDATE sites SET run_order=3 WHERE site_id=44;
UPDATE sites SET run_order=2 WHERE site_id=2;
UPDATE sites SET run_order=1 WHERE site_id=14;

由于我是通过PHP运行的,所以我不想发出许多个人查询,即使我老板一天可以访问的网站数量当然受到内燃机的限制。
我的SQL表看起来像这样:

+---------------+----------------------+------+-----+---------+----------------+
| Field         | Type                 | Null | Key | Default | Extra          |
+---------------+----------------------+------+-----+---------+----------------+
| site_id       | int(10) unsigned     | NO   | PRI | NULL    | auto_increment |
| ...           |                      |      |     |         |                |
| selected      | enum('false','true') | NO   |     | false   |                |
| run_order     | int(10) unsigned     | NO   |     | 0       |                |
+---------------+----------------------+------+-----+---------+----------------+

1 个答案:

答案 0 :(得分:0)