mysql - 如何在 MYSQL 中更新/使 View 可更新

标签 mysql sql mysql-workbench sql-view

我通过以下方式创建了一个 View :

CREATE VIEW product_prices
AS SELECT Name, Price
FROM Products;

我需要更新它,以便 10 英镑以下的价格比第 3 类中的价格高出 10%。这些需要在单独的 SELECT 语句中查找。

到目前为止我已经得到了这段代码,但我收到了 1443 错误,即 View 的定义不允许我更新它。如何使其成为可更新的 View ?

UPDATE product_prices
SET Price = Price * 1.1
WHERE Name != (SELECT Name FROM Products WHERE Category_ID = 3)
AND Price < 10;

最佳答案

使用 join而不是<> :

UPDATE product_prices pp LEFT JOIN
       Products p
       ON p.name = pp.anme and p.Category_ID = 3
    SET pp.Price = pp.Price * 1.1
WHERE p.Name IS NULL AND pp.Price < 10;

问题在于正在更新的表上的操作,而不是 View 定义。

关于mysql - 如何在 MYSQL 中更新/使 View 可更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47619011/

相关文章:

MySQL 工作台 : Can't apply NOW() to timestamps field

php - PhpStorm中如何设置SSH代理用户连接MySQL?

mysql - 如何在mysql workbench中设计子类型?

mysql - El Capitan mysql 设置数据目录

mysql - 获取所有用户 friend 有意想不到的结果

PHP: mysql_query 及其连接说明

mysql - 从两个 MySQL 表中选择并分组

sql - MySQL选择使用日期时间,仅按日期分组

mysql - 由于语言编码,本地 mysql 导入文件 .sql 出现问题

java - 与 JPA 的数据库独立字符串比较