即使我没有使用GROUP BY,SQLite也会返回单行

时间:2012-07-27 06:40:18

标签: sqlite

我有以下SQLite数据库

enter image description here

如果我进行以下查询,我预计将返回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行返回?

2 个答案:

答案 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