假设我有以下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
语句中?
答案 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。