mysql - 更新 SELECT 语句的结果,就好像它是一个 View ,并在 MySQL 中显示结果

标签 mysql sql

假设我们有一张表Table1

----------------
| id |Col1|Col2|
----------------
|  1 | a  | 15 |
----------------
|  2 | a  | 25 |
----------------
|  3 | b  | 20 |

我想创建一个新 View ,它显示与 Table1 完全相同的值,但如果相应的 Col1 值为 a,则 Col2 值更改为 30。我不想修改 Table1

我如何创建一个既更新又显示新表内容的 View ?

我可以使用伪代码来演示我的意思背后的逻辑。

var tableOneTemp = SELECT * FROM Table1

UPDATE tableOneTemp
SET Col2 = 30
WHERE Col1 = a

SELECT * FROM tableOneTemp

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

最佳答案

像下面这样使用 Case():

CREATE VIEW tableOneTemp AS 
    SELECT id,Col1,(case when Col1 = 'a' then 30 else Col2 end) AS Col2
    FROM Table1;

SELECT * FROM tableOneTemp;

关于mysql - 更新 SELECT 语句的结果,就好像它是一个 View ,并在 MySQL 中显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50484974/

相关文章:

sql - 如何计算varchar中指定字符的出现次数

sql - 在整个时间范围内产生时间岛。 SQL服务器

php - MYSQL、PHP)使用 UNION ALL 从多个表的所有列获取值

php - 如何使用 Avangate 设置定期订阅

php - 如何使用 codeigniter 从我的表字段中显示计数结果

错误信息

sql - HANA:如何在 RAND() 函数上设置种子?

java - 关于使用 Ebean 的 Play Framework 和 MySQL 的简单 CRUD 教程?

mysql - 通过 ORM 从多对多选择中删除 id

sql - 由于当前正在使用中的数据库,因此无法在Azure Data Studio中删除数据库