我有一些根本不相关的表格:
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
而不是3个单独的查询总和的视图,我希望有一个查询,我将获得每个表中的总和的视图
SELECT SUM(books.views), SUM(apps.views), SUM(cars.views) FROM books,apps,cars;
giving me NULL NULL NULL
2条答案
按热度按时间j2cgzkjk1#
您仍然需要多个选择,因为这些表是不相关的。
试试这个(信用到this answer):
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
screenshot of my test
可能有更好/更好的方法来实现这一点,但至少这是一个开始。
编辑
运行您的示例
如果我运行与您相同的命令,结果将被乘以9(参见here)。
最可能出现的情况--空表
我刚意识到你的结果是空的。因此,正如其他人所指出的,你的table必须是空的。在我的示例中,我将视图字段创建为
NOT NULL
,这样我就不会遇到您所做的事情。see example here
编辑2
提供有关在何处运行查询的其他信息将非常有用。您是否会意外地针对不同版本的表(可能是软件中的不同上下文窗口)运行查询?
stszievb2#
(不需要“派生”表。)
有些数据库(MySQL除外)的末尾可能需要
FROM DUAL
。