SELECT语句的UPDATE结果就好像它是一个视图并在MySQL中显示结果

时间:2018-05-23 09:42:42

标签: mysql sql

假设我们有一个表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 = a

     

SELECT * FROM tableOneTemp

然后视图将显示最终选择语句的结果。

1 个答案:

答案 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;