【问题标题】:How to upgrade next/previous record in mysql如何在mysql中升级下一条/上一条记录
【发布时间】:2011-07-28 06:23:16
【问题描述】:

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 重新排列菜单顺序呢?

【问题讨论】:

  • 使用您已经知道的那些查询来检索要更新的行的 ID,使用您刚刚检索到的两个 ID 使用 WHERE ID = X 发出两个 UPDATE 查询。其中哪一部分是个问题?

标签: php mysql


【解决方案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)

【讨论】:

    【解决方案2】:

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

    UPDATE table SET field='some value' WHERE id=$id+1

    UPDATE table SET field='some value' WHERE id=$id-1

    你去吧:)

    【讨论】:

    • 假定 ID 连续,这是一个非常限制条件。
    猜你喜欢
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多