如何在mysql中升级下一个/上一个记录

时间:2011-07-28 06:23:16

标签: php mysql

mysql fetch previous or next record order by anyother field name and not by using order by id

select * from table where id > $id order by name asc limit 1
select * from table where id < $id order by name desc limit 1
  

我能够获得下一个和之前的记录,但在这种情况下我怎么能   升级下一个和以前的记录。

ID Links          orderID
14 Google.com     1
15 Yahoo.com      2
20 gmail.com      3
25 facebook.com   4

如果我在每个链接前面使用+和 - 按钮升级和降级它们然后按orderID重新排列菜单顺序怎么样?

2 个答案:

答案 0 :(得分:1)

好吧,如果您真的想在单个查询中执行此操作,则可以使用子查询来查找需要更新的ID。问题在于,由于明显的数据完整性原因,MySQL无法更新您尝试子查询的同一个表。因此,您需要使用一些变通方法,例如在子查询中创建临时表。

UPDATE table AS t
SET [...]
WHERE t.`id` = (select * FROM (select `id` from table where `id` > $id order by `id` asc limit 1) AS sq)

答案 1 :(得分:0)

绝对没有必要做两个选择。 您可以执行以下操作:

  

UPDATE表SET字段='某个值'WHERE id = $ id + 1

     

UPDATE表SET字段='某个值'WHERE id = $ id-1

你去:)