使用MariaDB 5.5.52中生成的列

时间:2017-04-28 13:59:39

标签: mysql sql mariadb

我有一个有效的sql语句,如下所示:

SELECT SUM(CASE WHEN faell_art='monatlich' THEN betrag*12 END) + SUM(CASE WHEN faell_art='vierteljährlich' THEN betrag*4 END) + SUM(CASE WHEN faell_art='halbjährlich' THEN betrag*2 END) + SUM(CASE WHEN faell_art='jährlich' THEN betrag END) as total FROM banking

现在我想创建一个完全相同的生成列。我试过这句话:

ALTER TABLE `banking` ADD `test` DECIMAL(10,2) AS (SUM(CASE WHEN faell_art='monatlich' THEN betrag*12 END) + SUM(CASE WHEN faell_art='vierteljährlich' THEN betrag*4 END) + SUM(CASE WHEN faell_art='halbjährlich' THEN betrag*2 END) + SUM(CASE WHEN faell_art='jährlich' THEN betrag END)) AFTER `kommentar`;

然而它不起作用(“#1901 - 列'test'不允许使用函数或表达式。”。

有任何帮助吗?谢谢: - )

1 个答案:

答案 0 :(得分:0)

有一个限制:

  

子查询或依赖于行外数据的任何内容都不是   允许(这些不是确定性的,因为基础数据可以   变化)。

所有聚合函数(SUM,...)都与表中的其他记录一起使用。

Virtual (Computed) Columns

因此,无法创建生成的列。或者,您可以创建一个视图。