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中文網其他相關文章!