2015-12-14 42 views
-2

mysql表具有列order-id,order-item-id。需要爲生成的列創建一個表達式(5.7上的新功能)請查看v虛擬生成的列的圖像以查看圖像以便於理解。 tablename是每天訂單表達式爲mysql 5.7虛擬列

enter image description here

+0

您是否需要模擬一個order-id相關的自動增量字段?如果是,您是否可以確認它應該按照order-item-id的升序排列?另外,你可以向我們分享你迄今爲止的嘗試嗎? – Shadow

+0

需要與excel的countif相似,因爲它是單行表達式,因此對於訂單id(通過&分析該組中的訂單數量)。我不知道應該使用哪個保留函數來完成此操作。 – Kanted

+0

上面生成的列不是excel中countif()的結果。您的示例輸出與您的評論相矛盾。請更新您的示例輸出或在評論中更好地解釋它。無論哪種方式,我不確定您是否可以爲此使用生成的列,因爲確定此數字將需要掃描整個表(即子查詢),這在生成的列中是不允許的。您可能必須使用子查詢在視圖中實現此功能,而不是生成的列。 – Shadow

回答

0

由於對generated columns限制,你不能創建一個包含子查詢表達式:

子查詢,參數,變量,存儲功能,以及用戶自定義函數不允許。

由於您想獲取多條記錄中的數據信息,因此您必須使用子查詢並且這是不允許的。但是,您可以創建一個視圖,而不是包含此附加數據的生成列。下面的sql語句可以構成這樣的視圖的核心:

select d1.*, d2.NumberOfItems 
from dailyorders d1 
inner join (select orderid, count(*) as NumberOfItems from dailyorders group by orderid) d2 
on d1.orderid=d2.orderid