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重新排列菜单顺序怎么样?
答案 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
你去:)