我如何定义一个具有两个计算字段的视图,例如…
('TableName'.'BlueSquares' + 'TableName'.'RedSquares') AS TotalSquares, ('TableName'.'BlueCirles' + 'TableName'.'RedCircles') AS TotalCircles
…并根据前两个计算字段创建第三个计算字段,如…
('ViewName'.'TotalSquares' + 'ViewName'.'TotalCircles') AS TotalShapes
…?
当我按名称引用前两个计算字段时,我收到一条消息,指出字段未知。
谢谢!
由于视图中不允许子查询,因此您需要通过创建多个视图来模拟它们。
例如,如果直接执行此查询,将解决您的问题:
SELECT
TotalCircles + TotalSquares AS TotalShapes
FROM
(SELECT
BlueCirles + RedCircles AS TotalCircles,
BlueSquares + RedSquares AS TotalSquares
FROM
(SELECT
2 AS BlueCirles,
3 AS RedCircles,
4 AS BlueSquares,
5 AS RedSquares
) AS shapes
) as totals;
根据MySQL文档,视图在FROM子句中具有不能包含子查询的限制。要变通解决此限制并将该查询转换为视图,请将其分解为3个视图(每个子查询一个),最后一个给出所需的字段组合:
CREATE VIEW shapes AS
SELECT
2 AS BlueCirles,
3 AS RedCircles,
4 AS BlueSquares,
5 AS RedSquares;
CREATE VIEW totals AS
SELECT
BlueCirles + RedCircles AS TotalCircles,
BlueSquares + RedSquares AS TotalSquares
FROM
shapes;
CREATE VIEW result AS
SELECT
TotalCircles + TotalSquares AS TotalShapes
FROM
totals;
SELECT * FROM result;
问题内容: 我正在尝试创建一个触发器,该触发器将根据用户输入的lat / lng列来更新GEOMETRY列。我的触发器看起来像这样- 但是,当我插入带有lng,lat值的新行时,出现以下错误- 错误1442(HY000):无法更新存储函数/触发器中的表’tbl’,因为调用该存储函数/触发器的语句已使用该表。 我不能创建这样的触发器吗?如果没有,那么自动化的方法是什么? 问题答案: 尝试使用INSE
问题内容: 我有一个如下表: 现在我想更改此表以具有新字段,并且该字段必须具有默认值 如下所示: 怎么做? 谢谢你的帮助 问题答案: 根据MySQL 文档(添加了重点),您不能使用默认值的表达式: 10.1.4。数据类型默认值 数据类型规范中的DEFAULT value子句指示列的默认值。除一个例外, 默认值必须为常量; 它不能是函数或表达式 。例如,这意味着您不能将日期列的默认值设置为诸如NOW
如何创建计算字段以及怎么样从应用程序中使用别名。 计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式,例如: 显示两个信息,但不是在用一个表 不同列中,但程序需要把他们作为一个格式的字段检索出来 列数据是大小混合,但程序需要把所以数据按大写表示。 物品订单表存储的物品的价格和数量,但没有存储物品的总价,打印时,需要物品的总价格。 根据需要表的数据进行总数,平均数等计算。 上面的情况都我们
我刚开始掌舵,我不明白为什么会这样。我正在使用官方的EFK图表,我正在尝试将发行版名称添加到FluentD-ElasticSearch的主机字段,但它没有得到评估。它只是作为字符串传递。ELASTICSEARCH_HOSTS中的发行版名称计算正确,但主机字段中的发行版名称完全没有计算。有人能说出为什么会发生这种情况,以及如何修复它吗? Helm版本:version.buildinfo{versio
我在编程一个订单提交页面时遇到了一个相当大的问题,该页面的目的是提交一个订单的争议--提供两个字段被填写,但只有当一个字段少于另一个字段时。 基本上,一个是下拉,另一个是争端框,查询如下: 如果DispotestExtBox=“”而下拉框=“请选择...” 一切正常-提交按钮已启用 如果DisportestExtBox!=“”而下拉框=“请选择...” 错误(反之亦然,因此如果填充了Dispone
问题内容: 我在Sqlite中有一个查询,其中涉及复杂的列计算,可以这样说: 我想将此计算选择为,但我还需要将其用作另一种计算的组成部分: 不幸的是,这会产生错误: 我知道我可以简单地重复计算: 但是,假设操作复杂且昂贵,是否有什么方法可以在以后重新引用它而不必重新计算呢? 问题答案: 您需要使用子查询。 结果