我有以下SQLite数据库
如果我进行以下查询,我预计将返回3行结果。
SELECT name, sum(heart) FROM test_table;
但是,即使我不使用GROUP BY
,也只返回1行。
C:\Users\yan-cheng.cheok\Desktop>sqlite3.exe
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .restore abc
sqlite> SELECT name, sum(heart) FROM test_table;
Record3|102
我期待结果:
Record1|102
Record2|102
Record3|102
与convientional SQL一样,如果我不使用GROUP BY
,则会返回每个行。
http://www.w3schools.com/sql/sql_groupby.asp
有什么我可以让所有3行返回?
答案 0 :(得分:3)
试试这个你可以使用cross join
SELECT a.name, b.totalHeart
FROM test_table a,
(
SELECT SUM(heart) totalHeart
FROM test_table
) b
答案 1 :(得分:0)
此行为为documented:
如果SELECT语句是没有GROUP BY子句的聚合查询,则结果集中的每个聚合表达式将在整个数据集中进行一次求值。对于任意选择的数据集行,对结果集中的每个非聚合表达式求值一次。对于每个非聚合表达,使用相同的任意选择的行。或者,如果数据集包含零行,则针对完全由NULL值组成的行评估每个非聚合表达式。
你可以这样做:
sqlite> select a.name, b.s from abc as a, (select sum(heart) as s from abc) as b;
Record1|102
Record2|102
Record3|102