我有一个有效的 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”不允许使用函数或表达式”)。
有什么帮助吗?谢谢:-)
最佳答案
有一个限制:
subqueries or anything that depends on data outside the row are not allowed (these are not deterministic because the underlying data can change).
所有聚合函数(SUM,...)都与表中的其他记录一起操作。
因此,无法创建该生成的列。或者,您可以创建一个 View 。
关于mysql - 在 MariaDB 5.5.52 中使用生成的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43682052/