因此,我决定从现有的表中创建一个视图,但是我不能对它们使用比较条件。问题是,如果我的预算低于价格,那么它应该在列中显示为1,否则显示为0。此外,该列应该是一个名为riskyornot的布尔值。为此,我使用了一个公式,但由于一些mysql语法错误而无法将其取下来。以下任何帮助都是我的声明:
CREATE VIEW PricevsAllowance as SELECT c.names AS 'category name ',a.maxamt AS 'allowance', tot.totalexpend AS 'total expenditure',RiskyorNot BOOLEAN FROM Category c JOIN allowance a ON c.allow_id = a.allow_id JOIN Totalexpanddetail t ON t.cat_num = c.cat_num
IF(a.maxPercentage *(a.maximumprice/100)) THEN
RiskyorNot = '1'
ELSE
RiskyorNot = '0'
END IF;
3条答案
按热度按时间qcbq4gxm1#
视图不能包含过程逻辑,这正是if-else构造。您只能在视图中使用逻辑表达式。尝试在这里使用case语句。这将允许您编写在查询视图时可以计算的表达式。
您还需要将这个case语句放到上面开始的列列表中。
3hvapo4f2#
我猜你想要
if()
功能,而不是IF
声明。后者不能用于查询。还有if()
必须在列列表中。而带有空格的别名(尤其是结尾处的a)在将来往往会引起头痛。nr9pn0ug3#
以下内容将修复您的语法错误:
这可能会也可能不会计算
RiskyOrNot
正确地。如果没有样本数据、期望的结果和对逻辑的更好解释,其他人只能猜测逻辑到底应该是什么。笔记:
仅对字符串和日期常量使用单引号。使用反记号转义标识符。
我更改了列的名称,因此它们不需要转义。
字符串常量不是布尔值。这个表达式本身就是有效的。