[英]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.