假設我的表myTable有一個 column1,其中已經有一些值。現在我得到了一些新值,我應該將它們放入一個新創建的名為 ' column2' 的列中。這些是一對一關聯在一起并且是獨一無二的。例如:
column1 | column2
-----------------
'ABCHi' | 'newOH'
-----------------
'TER12' | 'Meow2'
-----------------
'WhatE' | 'BMW26'
-----------------
所以我可以這樣說:
Update myTable SET column2 = 'newOH' WHERE column1 = 'ABCHi'
并為每一行執行此操作(我有 32 個要執行)。但我想也許有一種“更好”的方式來做到這一點?就像C#我可以說填充 adictionary然后做一個for-each回圈一樣!
uj5u.com熱心網友回復:
您可以使用表值建構式:
declare @Samples as Table ( Column1 VarChar(10), Column2 VarChar(10) );
-- Initialize the sample data.
insert into @Samples ( Column1 ) values
( 'ABCHi' ), ( 'TER12' ), ( 'WhatE' )
select * from @Samples;
-- Update the second column.
update OSamples
set Column2 = NSamples.Column2
from @Samples as OSamples inner join
( values
( ( 'ABCHi' ), ( 'newOH' ) ),
( ( 'TER12' ), ( 'Meow2' ) ),
( ( 'WhatE' ), ( 'BMW26' ) )
) as NSamples( Column1, Column2 )
on OSamples.Column1 = NSamples.Column1;
select * from @Samples;
提琴。
uj5u.com熱心網友回復:
您可以使用 With 子句將“字典”創建為行內視圖。
這是小提琴https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=c0e1393785082fd5cd9352d513b76af6
with Dictionary as(
select 'ABCHi' as column1, 'newOH' as column2
union all
select 'TER12' as column1, 'Meow2' as column2
union all
select 'WhatE' as column1, 'BMW26' as column2
)
UPDATE t
SET t.column2=dictionary.column2
FROM mytable t JOIN Dictionary ON t.column1 = Dictionary.column1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/474575.html
上一篇:帶STR功能的前導空格
下一篇:限制基于1列的結果
