簡體   English   中英

如何讓 MySQL 表格列具有計算值

[英]How to have a MySQL table column with a calculated value

我的問題最容易用一個例子來解釋......

我有以下兩張桌子 - 飛機和座位:

planes
 plane_ID     LONGINT - Index
 model        CHAR(20)
 seat_count   INT - Calculated (Count of rows in seats where plane_ID matches)
 filled_seats INT - Calculated (Count of rows in seats where plane_ID matches and reserved = True)

seats
 plane_ID  LONGINT
 reserved  bool

我想發生的是,當我查詢飛機表時,我想獲得“座位”列和“填充座位”列的計算值。

我只想說“SELECT seat_count FROM planes WHERE model='Boeing 787'”來找出波音 787 的座位表中有多少條記錄。我期望的是返回單行,單列包含波音 787 的座位數。

這可以通過更復雜的 select 語句來完成,但我想改用計算列。

我知道這可以做到,但我不知道怎么做,也不知道它叫什么,所以我很難在網上找到任何信息。

我在 Linux 上使用 MySQL v 8.0.19

您正在尋找的是Generated columns ,但您不能對它們做您想做的事情,因為表達式只能包含“文字、確定性內置函數和運算符”,特別是:“不允許子查詢。”。

您可以使用VIEW實現您想要的:

CREATE VIEW plane_seats AS
SELECT p.plane_ID, p.model, 
       COUNT(s.reserved) AS seat_count,
       SUM(s.reserved) AS filled_seats
FROM planes p
JOIN seats s ON s.plane_ID = p.plane_ID
GROUP BY p.plane_ID, p.model

然后,您可以在VIEW上使用您的查詢:

SELECT seat_count 
FROM plane_seats
WHERE model = 'Boeing 787'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM