0

假设我有以下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 中获取数组,检查哺乳动物元素,然后UPDATE对行运行另一个 mysql 语句。

UPDATE mytable
SET mammal = 1
WHERE id = selectidfromabove

有没有办法可以在一个 mysql 语句中完成这一切,也许将SELECT上面的语句包装在一个UPDATE语句中?

4

1 回答 1

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。

于 2012-12-05T02:09:12.773 回答