我在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。
答案 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
)
您也可以使用WHERE
中SELECT
的{{1}}部分。
像这样
UPDATE
但是如果你想从uid列表中获取UPDATE,那么:
UPDATE user
SET user.status = '3'
WHERE user.status = '1'
OR user.status = '2';