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

Php 如果另一行尚未更新,则更新单个mysql行,php,mysql,sql,Php,Mysql,Sql,假设我有以下select语句,它返回insert_时间后第一次出现的dog=0: 然后,我想更新该行,以便仅当哺乳类还没有=1时,哺乳类才=1。我目前知道的唯一方法是用PHP获取数组,检查哺乳动物元素,然后运行另一个mysql语句来更新行 是否有一种方法可以在一个mysql语句中完成这一切,或者将上面的SELECT语句包装到UPDATE语句中?您可以完全按照您的建议执行: UPDATE mytable SET mammal=1 WHERE id IN ( SELECT id FR

假设我有以下select语句,它返回insert_时间后第一次出现的dog=0:

然后,我想更新该行,以便仅当哺乳类还没有=1时,哺乳类才=1。我目前知道的唯一方法是用PHP获取数组,检查哺乳动物元素,然后运行另一个mysql语句来更新行


是否有一种方法可以在一个mysql语句中完成这一切,或者将上面的SELECT语句包装到UPDATE语句中?

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

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
);

注意:您原来的select查询已修改为仅选择id。

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

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
);

注意:您原来的select查询被修改为仅选择id。

有一个限制0,1 FWIW。请注意,这将从匹配结果中更新一个完全随机的单个记录。。。虽然这正是你想要的。我建议你实际上可能想要一些不同的东西。嘿,Smose,我将使用ORDER BY insert_time来确保我在给定时间后立即获得记录,有一个限制0,1 FWIW。请注意,这将根据匹配结果更新一个完全随机的单记录。。。虽然这正是你想要的。不过,我建议您实际上可能想要一些不同的东西。嘿,Smose,我将使用ORDER BY insert_time来确保在给定的时间限制之后立即获取记录1不会为您提供可靠的结果集。每次都会随机更新一条记录。请用通俗易懂的英语解释一下你到底想做什么,因为我认为你会得到的答案不会做你真正想做的事情。也就是说,您确定只想用此更新一条记录吗?在我看来,您可能希望更新所有符合条件的记录,否?限制1不会为您提供可靠的结果集。每次都会随机更新一条记录。请用通俗易懂的英语解释一下你到底想做什么,因为我认为你会得到的答案不会做你真正想做的事情。也就是说,您确定只想用此更新一条记录吗?在我看来,你似乎想更新所有符合条件的记录,不是吗?
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
);