MySQL中基于其他列高效计算列的方法
MySQL 5.7.6及以上版本引入了生成列(Generated Columns),这是一种高效的方式,可以根据同一表中已存在的列自动计算新列的值。与视图不同,生成列是表定义的一部分,当源列发生更改时,它们会自动更新。
虚拟生成列与存储生成列
生成列可以是虚拟的或存储的:
在本例中,存储生成列更合适,因为在插入新记录或更新现有记录时,需要立即获得计算值。
使用存储生成列的实现
假设一个表有两个列:price
和 quantity
,我们想要添加一个新列 amount
,其值为 price
和 quantity
的乘积。可以使用以下SQL语句创建存储生成列:
<code class="language-sql">CREATE TABLE order_details ( price DOUBLE, quantity INT, amount DOUBLE AS (price * quantity) STORED );</code>
创建该列后,amount
将会为表中的每一行自动计算和存储。price
或 quantity
的任何更改都会触发 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中文网其他相关文章!