[英]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.