gpt4 book ai didi

mysql - 基于两个计算列的计算列

转载 作者:可可西里 更新时间:2023-11-01 07:11:47 27 4
gpt4 key购买 nike

我正在尝试做一个相当复杂的 SELECT 计算,我将概括为:

  1. 主要查询是一个表的通配符选择
  2. 一个子查询根据条件对所有项目执行 COUNT()(这很好用)
  3. 另一个子查询根据另一个条件对列中的数字执行 SUM()。这也可以正常工作,除非没有记录满足条件,它返回 NULL

我最初想把两个子查询加起来,比如 (subquery1)+(subquery2) AS total 这样可以正常工作,除非 subquery2 为 null,在这种情况下 total变为 null,无论 subquery1 的结果是什么。我的第二个想法是尝试创建第三列来计算两个子查询(即 (subquery1) AS count1, (subquery2) AS count2, count1+count2 AS total)但是我不认为计算两个计算列是可能的,即使是,我觉得同样的问题也适用。

除了获取两个子查询值并在我的程序中对它们求和之外,是否有人对这个问题有一个优雅的解决方案?

谢谢!

最佳答案

这里有两个问题:

  • 您不能在同一个 SELECT 列表的另一个表达式中使用一个列别名。

    但是,您可以在派生表子查询中建立别名并在外部查询中使用它们。

  • 你不能用 NULL 做算术运算,因为 NULL 不是零

    但是,您可以使用 COALESCE() 函数将 NULL“默认”为非 NULL 值。此函数返回其第一个非 NULL 参数。

这是一个例子:

SELECT *, count1+count2 AS total
FROM (SELECT *, COALESCE((subquery1), 0) AS count1,
COALESCE((subquery2), 0) AS count2
FROM ... ) t;

(请记住,必须为派生表指定表别名,在此示例中为“t”)

关于mysql - 基于两个计算列的计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/889711/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com