SQL SELECT然后在一个查询中更新

时间:2014-06-24 10:23:58

标签: php mysql sql

我必须从MySQL数据库中随机选择一行,然后在该行上增加一个计数器(同一个表)。目前,我正在运行

SELECT id, img, title, alt, ... FROM table WHERE ... ORDER BY RAND() LIMIT 1

然后单独

UPDATE table SET counter = counter + 1 WHERE id = $id

因此运行两个查询。有没有办法在一个查询中执行此操作? 谢谢!

1 个答案:

答案 0 :(得分:1)

如果您只需要增加值而不返回要处理的行,则可以执行以下操作: -

UPDATE fred
INNER JOIN
(
    SELECT id
    FROM fred
    ORDER BY RAND()
    LIMIT 1
) sub0
ON fred.id = sub0.id
SET fred.counter = fred.counter + 1

或更简单: -

UPDATE fred
SET fred.counter = fred.counter + 1
ORDER BY RAND()
LIMIT 1