簡體   English   中英

根據SQL中的選擇更新多行中的表列

[英]Update Table Column in Multiple Rows based on a Selection in SQL

我已經使用SQL Select語句選擇了一組rows ,並且我試圖弄清楚如何將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';

我要尋找的最終結果是將所有selected usersstatus column更新為“ 3”。 我希望能夠在一個SQL query執行此SQL query ,而不必循環或執行任何操作。

感謝您的見解!

更新:

抱歉! 我忘了加上offset 我想選擇前50個返回的行之后的行。 因此,我希望前50個符合條件的行都將status列更改為3。

更新用戶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);
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);

請嘗試這個

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

新:

使用兩個子選擇(感謝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
)

舊:

您也可以在UPDATE使用SELECT中的WHERE部分。 像這樣

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

但是,如果要從uid列表中進行UPDATE,則:

<?php
// The uid list from the select may be 
$uid_list = array(1,4,7,12,401);
// then you could make
$sql = "
UPDATE user 
SET user.status = '3'
WHERE user.userID IN (" . implode(',', $uid_list) , ")

";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM