如果ORDER BY为1,则更新字段?

时间:2011-06-30 18:56:26

标签: php sql-order-by sql-update str-replace

有没有办法做到这一点:

我想根据ORDER BY位置更新字段'rank'。

例如:(伪代码)

If id order by place = 1 then update rank field to place were id=get id


 rank place id

  1     1    5   PC
  2     2    8   MAC
这可能吗?

2 个答案:

答案 0 :(得分:3)

这样的东西?

UPDATE tbl_name
SET rank = 1
WHERE id = (
     SELECT id
     WHERE condition
     ORDER BY place DESC
     LIMIT 1
)

或者从您的评论(我认为MySQL http://dev.mysql.com/doc/refman/5.0/en/update.html):

UPDATE tbl_name
SET rank = 10
WHERE id = 9
ORDER BY wins DESC
LIMIT 1

您可以随时执行SELECT以检查这些是否也是您想要更新的记录:

SELECT *
FROM tbl_name
WHERE id = (
     SELECT id
     WHERE condition
     ORDER BY place DESC
     LIMIT 1
)

OR

SELECT *
FROM tbl_name
WHERE id = 9
ORDER BY wins DESC
LIMIT 1

答案 1 :(得分:0)

某些RDBMS在您可以使用的查询中有一个ROWNUM伪列。 您没有指定您正在使用的数据库,例如Oracle有此。