繁体   English   中英

Select 一次查询中不相关表中列的总和

[英]Select SUM of columns in unrelated tables in one query

我有这些根本不相关的表:

Books                          Apps                           Cars                       

Id     Views                   Id     Views                   Id     Views
------------                   ------------                   ------------
1      3                       4      5                       11      10
2      4                       5      100                     13      3
3      3                       6      5                       15      7



I want:

total_books    total_apps    total_cars
10             110           20

我希望有 1 个查询,而不是 3 个单独的视图总和查询,我将在其中获取每个表中的视图总和

SELECT SUM(books.views), SUM(apps.views), SUM(cars.views) FROM books,apps,cars;

giving me NULL NULL NULL

由于表不相关,您仍然需要多次选择。

试试这个(归功于这个答案):

SELECT * FROM (SELECT SUM(Views) as total_books from Books) as Books, (SELECT Sum(Views) as total_apps from Apps) as Apps, (SELECT Sum(Views) as total_cars from Cars) as Cars

我的测试截图

可能有更好/更高效的方法来实现这一点,但至少这是一个开始。

编辑

运行你的例子

如果我运行与您相同的命令,结果将乘以 9(参见此处)。

最有可能的情况——空表

我刚刚意识到您的结果返回为 null。正如其他人所指出的,您的桌子一定是空的。 在我的示例中,我将 Views 字段创建为NOT NULL ,因此我永远不会遇到您所做的事情。

看这里的例子

编辑 2

提供有关您在哪里运行查询的附加信息会很有用。 您是否会不小心针对不同版本的表运行查询(可能是您软件中的不同上下文 window)?

SELECT 
    (SELECT SUM(Views) from Books) as Books,
    (SELECT Sum(Views) from Apps)  as Apps,
    (SELECT Sum(Views) from Cars)  as Cars ;

(不需要“派生”表。)

某些数据库(MySQL 除外)可能需要FROM DUAL最后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM