在mysql中添加计算列

时间:2016-03-07 02:27:50

标签: mysql sql calculated-columns

我试图添加一个名为“' price'到我的order_details表。我希望它能从其他表中的不同产品价格中计算出价格。

alter table order_detail add column Price decimal(5,2) as 

(CASE (order_detail.item_id, 
       item.item_id, 
       bagel.item_id, 
       bagelfilling.item_id, 
       Item.price, 
       bagelfilling.price,
       order_detail.quantity,
       order_detail.discount,
       drink_sizes.price,
       drink.item_id)

        WHEN (order_detail.item_id = item.item_id) AND (item.item_ID = bagel.item_id) AND (bagel.item_id = bagelfilling.item_id)
            THEN ((Item.price + bagelfilling.price)*order_detail.quantity)-order_detail.discount


        WHEN (order_detail.item_id = item.item_id) AND (item.item_ID = drink.item_id)
            THEN ((Item.price + drink_sizes.price)*order_detail.quantity)-order_detail.discount

        WHEN (order_detail.item_id = item.item_id) AND (item.item_ID = bagel.item_id)  
            THEN (Item.price*order_detail.quantity)-order_detail.discount

        WHEN (order_detail.item_id = item.item_id) AND (item.item_ID = drink.item_id)
            THEN (Item.price*order_detail.quantity)-order_detail.discount

          else 0.00  

            end)

我一直遇到这个错误:

  

错误代码:1241。操作数应包含1列。

如何解决此问题?我需要在创建表格或添加数据时计算价格。

1 个答案:

答案 0 :(得分:1)

  1. 由于不允许子查询,因此无法在计算字段的表达式中引用其他表中的字段。因此,即使我们为您修复了语法错误,它也行不通。此任务似乎需要触发器,存储过程或视图。

  2. 即使您可以在case关键字后面加上一个表达式,列出的列名也不是有效的表达式,因为它不会返回单个值。