有没有办法做到这一点:
我想根据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
这可能吗?
答案 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有此。