根据SQL中的选择更新多行中的表列

时间:2014-07-08 09:43:20

标签: php mysql sql

我在rows中使用Select语句选择了一组SQL,我正在尝试弄清楚如何将此table中的列更新为基于所述的值selection

选择:

SELECT user.userID FROM user WHERE user.status = '1' or user.status = '2' LIMIT 1000 OFFSET 50;

更新:

UPDATE user SET user.status = '3';

我要找的最终结果是所有status column的{​​{1}}都更新为'3'。我希望能够在一个selected users中执行此操作,而不必循环或任何东西。

感谢您的任何见解!

更新:

抱歉!我忘了添加SQL query。我想在前50个返回的行之后选择行。 所以我希望在前50个符合条件的所有行之后将状态列更改为3。

4 个答案:

答案 0 :(得分:4)

OLD

更新用户SET user.status =' 3'在哪里user.status =' 1'或user.status =' 2';

请尝试此查询...

编辑问题后(按偏移量)

尝试以下查询您的偏移量。

UPDATE user SET user.status = '3' where  user.userID NOT IN(Select
userid from 
(SELECT userID as userid FROM user WHERE status = '1' or status = '2' LIMIT 50) 
as temptbl);

答案 1 :(得分:1)

UPDATE user SET user.status = '3' where user.status in ('1', '2');

更新:

UPDATE user SET user.status = '3' where user.userID in (SELECT user.userID FROM user WHERE user.status = '1' or user.status = '2' LIMIT 1000 OFFSET 50);

答案 2 :(得分:0)

请试试这个

UPDATE user SET user.status = '3' WHERE user.status IN ( '1' , '2' )

答案 3 :(得分:0)

新:

使用两个子选择(感谢Yograj Sudewad让我误入歧途)

UPDATE user 
SET user.status = '3'
WHERE user.userID IN (
    SELECT userId 
    FROM (
        SELECT user.userID 
        FROM user 
        WHERE user.status = '1' or user.status = '2' 
        LIMIT 1000 OFFSET 50
    ) AS tableWithNoName
)

旧:

您也可以使用WHERESELECT的{​​{1}}部分。 像这样

UPDATE

但是如果你想从uid列表中获取UPDATE,那么:

UPDATE user 
SET user.status = '3'
WHERE user.status = '1' 
    OR user.status = '2';