如果另一行尚未更新,则更新单个mysql行

时间:2012-12-05 02:04:29

标签: php mysql sql

假设我有以下select语句,该语句返回dog=0之后insert_time的第一次出现:

SELECT mammal, id
FROM mytable
WHERE dog = 0 
  AND insert_time > "2012-02-09 00:00:00"
LIMIT 0, 1

然后我想要更新那一行,以便mammal = 1只有哺乳动物还没有=1。我目前知道如何做到这一点的唯一方法是在PHP中获取数组,检查哺乳动物元素,然后运行另一个mysql语句到UPDATE行。

UPDATE mytable
SET mammal = 1
WHERE id = selectidfromabove

有没有办法可以在一个mysql语句中完成所有操作,可能将上面的SELECT语句包含在UPDATE语句中?

1 个答案:

答案 0 :(得分:3)

您可以完全按照您的建议行事:

UPDATE mytable
SET mammal=1
WHERE id IN (
    SELECT id
    FROM mytable
    WHERE dog = 0 
        AND insert_time > "2012-02-09 00:00:00"
    LIMIT 0, 1
);

注意:您的原始选择查询已修改为仅选择ID。