iT邦幫忙

0

詢問update是否有較精簡的寫法

以下為簡單例子...
TableTest,欄位Status1存放Today,要更新Date1為今天的時間;欄位Status2存放Tomorrow,要更新Date2為明天的時間。update的是同一個表TableTest,但更新的欄位與條件不同,目前有嘗試過merge不適用,也沒找到其他方法,一般來說會分開寫,好奇是否有更好的寫法呢?

建立相關資料:

--創建表
create table [dbo].[TableTest](
	[Id] int identity (1, 1)
	, [Date1] nvarchar(4000)
	, [Date2] nvarchar(4000)
	, [Status1] nvarchar(4000)
	, [Status2] nvarchar(4000)
) 

--建立測試資料
insert TableTest (
	[Date1], [Date2], [Status1], [Status2]
) 
values  
(null,null,'Today',null)
, (null,null,null,'Tomorrow')

--查詢表
select * from [TableTest]

update:

--
update TableTest
set Date1 = Getdate()
from TableTest
where Status1 = 'Today'

--
update TableTest 
set Date2 = DATEADD(day,1, Getdate())
from TableTest
where Status2 = 'Tomorrow'

1 個回答

2
純真的人
iT邦高手 1 級 ‧ 2019-04-17 17:47:33
最佳解答

恩..合併?

update TableTest
set Date1 = (case when Status1 = 'Today' then Getdate() else null end)
, Date2 = (case when Status2 = 'Tomorrow' then DATEADD(day,1, Getdate()) else null end)
where (Status1 = 'Today' or Status2 = 'Tomorrow')
anniecat iT邦新手 4 級 ‧ 2019-04-17 18:02:08 檢舉

已驗證可行,感謝您~

我要發表回答

立即登入回答