對于資料庫,我需要從不同表的操作中記錄狀態。
表格1
| ID | 行動 |
|---|---|
| 1 | 接受 |
| 2 | 節省 |
| 3 | 提取 |
| 4 | 接受 |
表 2
| ID | 狀態 |
|---|---|
| 1 | |
| 2 | |
| 3 | |
| 4 |
結果
表2
| ID | 狀態 |
|---|---|
| 1 | 公認 |
| 2 | 草案 |
| 3 | 撤銷 |
| 4 | 公認 |
我正在考慮使用 CASE WHEN 查詢來解決這個問題:
Update table 2
set state = action
from (select
case when action == Accept then Accepted
when action == save then draft
when action == withdraw then withdrawn
end
from table 1
)
我想知道這是否是最好的方法,或者是否可以為此使用某種映射器。
uj5u.com熱心網友回復:
理想情況下,您應該維護某種連接表,將操作映射Table1到Table2. 考慮:
表2
| ID | 狀態 |
|---|---|
| 1 | 公認 |
| 2 | 草案 |
| 3 | 撤銷 |
UPDATE t2
SET State = t12.State
FROM Table2 t2
INNER JOIN Table12 t12
ON t12.ID = t2.ID;
uj5u.com熱心網友回復:
您可以創建一個實作映射的存盤程序,然后呼叫它進行更新。這樣,如果您需要更改地圖,只需修改存盤程序
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316293.html
標籤:sql sql-server 案件
上一篇:sql/oracle-groupby月/年的總和引發錯誤
下一篇:SQL-分組的子組中的期間范圍
