MySQL 多重选择不工作

标签 mysql sql

我正在尝试从不同的表中选择总计的总和到一个查询中。由于某种原因,下面的这个查询曾经有效,但现在返回 NULL。如果我执行单个查询,它们会返回一个总和,但不会将它们加在一起。也许有人能看出我做错了什么?

SELECT
(
        (SELECT SUM(a.Total) FROM table1 a) + 
        (SELECT SUM(c.Total) FROM table2 c) + 
        (SELECT SUM(eb.Total) FROM table3 eb) + 
        (SELECT SUM(h.Amount) FROM table4 h) + 
        (SELECT SUM(n.Total) FROM table5 n) + 
        (SELECT SUM(mbo.Total) FROM table6 mbo)
   )
AS Overral_Amount_Total

最佳答案

你可以使用子查询:

SELECT SUM(sub.col) AS Overral_Amount_Total
FROM
(
  SELECT SUM(Total) AS col FROM table1 
  UNION ALL
  SELECT SUM(Total) FROM table2
  UNION ALL
  SELECT SUM(Total) FROM table3
  UNION ALL
  SELECT SUM(Amount) FROM table4
  UNION ALL
  SELECT SUM(Total) FROM table5
  UNION ALL
  SELECT SUM(Total) FROM table6
) AS sub;

重点是(您的一个表是空的/包含特定列中的所有 NULL):

CREATE TABLE tab(col INT);

SELECT SUM(col)
FROM tab;
-- will return NULL

SqlFiddleDemo

对于空表,它将返回 NULL 并且添加到 NULL 的任何内容都是 NULL

关于MySQL 多重选择不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691520/

相关文章:

由于损坏/过时的索引,MySQL 无限制地返回零行(空集)

sql - SQL Server 2008中使用BCP导出存储过程结果

php - 如何在 MySql 中更新 Json 数据类型?

php - 将 MySQL 行与 PHP 数组值进行比较

php - 数据库条目被删除

sql - Powershell SQL SELECT 输出到变量

sql - Oracle SQL - 两个 select 语句的最大值

mysql - 匹配mysql中字符串中的逗号分隔值

mysql - 如何使这个 MYSQL 外连接工作

mysql - 根据 ID 匹配将列从一个表更新到另一个表