假设我们有一个表Table1
----------------
| id |Col1|Col2|
----------------
| 1 | a | 15 |
----------------
| 2 | a | 25 |
----------------
| 3 | b | 20 |
我想创建一个新视图,显示与Table1
完全相同的值,但如果相应的Col1值为a,则Col2值将更改为30。我不想修改Table1
。
我如何创建一个既可以更新又显示这个新表内容的视图?
我可以使用伪代码来证明我的意思背后的逻辑。
var tableOneTemp = SELECT * FROM
Table1
更新tableOneTemp
SET Col2 = 30
Col1 = aSELECT * FROM tableOneTemp
然后视图将显示最终选择语句的结果。
答案 0 :(得分:3)
使用Case()
,如下所示:
CREATE VIEW tableOneTemp AS
SELECT id,Col1,(case when Col1 = 'a' then 30 else Col2 end) AS Col2
FROM Table1;
SELECT * FROM tableOneTemp;