簡體   English   中英

UPDATE TABLE SET(子查詢)='0'

[英]UPDATE TABLE SET (subquery) = '0'

Microsoft SQL Server 2012,Management Studio

我需要偶爾更新一個具有零值的表中的單行。 問題是有250列,所以我不想硬編碼列,列數不固定,下次運行代碼時可能會改變。

我有這個SQL代碼,它返回我正在尋找的列名。

SELECT
    COLUMN_NAME
FROM
    information_schema.columns
WHERE 
    TABLE_NAME = 'TABLE_NAME' 
    AND COLUMN_NAME <> 'Id'
    AND COLUMN_NAME <> 'FkId'
    AND COLUMN_Name <> 'Business'

我想要做的是將該查詢作為子查詢封裝到UPDATE

SET (subquery) = '0' WHERE [Id] = someid.

但我嘗試這個錯誤。 好像我應該能夠做到這一點,但我仍然得到錯誤:

Msg 102,Level 15,State 1,Line 8
'('附近的語法不正確。

Msg 102,Level 15,State 1,Line 17
'='附近的語法不正確。

嘗試后:

UPDATE TABLE_NAME
SET (SELECT
         COLUMN_NAME
     FROM
        information_schema.columns
     WHERE TABLE_NAME = 'TABLE_NAME' 
       AND COLUMN_NAME <> 'Id'
       AND COLUMN_NAME <> 'FkId'
       AND COLUMN_Name <> 'Business') = '0'
WHERE 
    Id = '26524'

我環顧四周,似乎沒有辦法SET(子查詢)= 0。

難住了。

試試這樣:

DECLARE @SqlCmd VARCHAR(MAX) = 'UPDATE TABLE_NAME SET ' +  
STUFF(
(
    SELECT
        ',' + COLUMN_NAME + '=0' 
    FROM
        information_schema.columns
    WHERE 
        TABLE_NAME = 'TABLE_NAME' 
        AND COLUMN_NAME <> 'Id'
        AND COLUMN_NAME <> 'FkId'
        AND COLUMN_Name <> 'Business'
    FOR XML PATH('')
),1,1,'') + ' WHERE SomeWhereCrit=123;'

SELECT @SqlCmd;

--If the select shows the correct command, remove the double minus before EXEC
--EXEC(@SqlCmd);

暫無
暫無

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

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