首页 > 数据库 > mysql教程 > MySQL中如何根据其他列高效计算某一列?

MySQL中如何根据其他列高效计算某一列?

Linda Hamilton
发布: 2025-01-17 07:42:10
原创
146 人浏览过

How Can I Efficiently Calculate a Column Based on Other Columns in MySQL?

MySQL中基于其他列高效计算列的方法

MySQL 5.7.6及以上版本引入了生成列(Generated Columns),这是一种高效的方式,可以根据同一表中已存在的列自动计算新列的值。与视图不同,生成列是表定义的一部分,当源列发生更改时,它们会自动更新。

虚拟生成列与存储生成列

生成列可以是虚拟的或存储的:

  • 虚拟 (Virtual): 在读取表记录时动态计算。
  • 存储 (Stored): 在写入或更新表记录时计算。

在本例中,存储生成列更合适,因为在插入新记录或更新现有记录时,需要立即获得计算值。

使用存储生成列的实现

假设一个表有两个列:pricequantity,我们想要添加一个新列 amount,其值为 pricequantity 的乘积。可以使用以下SQL语句创建存储生成列:

<code class="language-sql">CREATE TABLE order_details (
  price DOUBLE,
  quantity INT,
  amount DOUBLE AS (price * quantity) STORED
);</code>
登录后复制

创建该列后,amount 将会为表中的每一行自动计算和存储。pricequantity 的任何更改都会触发 amount 的更新。

包含表数据的示例

插入一些示例数据后:

<code class="language-sql">INSERT INTO order_details (price, quantity) VALUES(100,1),(300,4),(60,8);</code>
登录后复制

表将如下所示:

id price quantity amount
1 100 1 100
2 300 4 1200
3 60 8 480

amount 列将根据需要自动填充和更新,从而可以高效地访问计算值。

以上是MySQL中如何根据其他列高效计算某一列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板