Mysql 如何从两个没有关系的表中汇总列价格?

Mysql 如何从两个没有关系的表中汇总列价格?,mysql,summarization,Mysql,Summarization,在mysql数据库中,我有tblA.price和tblB.price。他们之间没有关系 我想总结一下表A和表B中的所有销售情况。它将类似于sumtblA.price+sumtblB.price作为总计 如何执行该查询?又快又脏。工会并不伟大。但是如果您有固定数量的表,这将起作用。性能可能会变得棘手,而且肯定不好看,但它回答了您的问题 select sum(price) as totalprice from (select sum(a.price) as price from a union al

在mysql数据库中,我有tblA.price和tblB.price。他们之间没有关系

我想总结一下表A和表B中的所有销售情况。它将类似于sumtblA.price+sumtblB.price作为总计


如何执行该查询?

又快又脏。工会并不伟大。但是如果您有固定数量的表,这将起作用。性能可能会变得棘手,而且肯定不好看,但它回答了您的问题

select sum(price) as totalprice from
(select sum(a.price) as price
from a
union all
select sum(b.price) as price
from b) as ab

@cjsfj显示的联盟将起作用,以下是几个其他选项:

执行两个标量子查询并将它们添加到一起

select (select sum(price) from tblA) + (select sum(price) from tblB) as total;
从应用程序中执行两个查询,获得每个查询的结果,并将它们添加到一起

select (select sum(price) from tblA) + (select sum(price) from tblB) as total;

为了补充其他答案,当其中一个表格没有结果时,我遇到了一些问题。它返回空值。出于这个原因,我必须过滤结果并将其转换为0。刚刚做了一个IFNULLSUMfield,0

这是我的最后一个问题:

SELECT 
   IFNULL(SUM(tblA.price),0) + (SELECT 
           IFNULL(SUM(fieldB),0)
       FROM
           tblB
       WHERE
           creation_date BETWEEN '$startDT' AND DATE_SUB(NOW(), INTERVAL 1 HOUR) AS amount
FROM
   tableA tblA
WHERE
   tblA.transaction_date BETWEEN 'startDT' AND DATE_SUB(NOW(),
       INTERVAL 1 HOUR)
       AND tblA.service_type <> 'service1'
       AND tblA.service_type <> 'service2'
       AND tblA.service_type <> 'service3';