SQLite返回单行,即使我没有使用GROUPBY

SQLite返回单行,即使我没有使用GROUPBY,sqlite,Sqlite,我有以下SQLite数据库 如果我进行以下查询,我预计将返回3行结果 SELECT name, sum(heart) FROM test_table; 但是,即使我没有使用分组依据,也只返回了一行 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 termina

我有以下SQLite数据库

如果我进行以下查询,我预计将返回3行结果

SELECT name, sum(heart) FROM test_table;
但是,即使我没有使用
分组依据
,也只返回了一行

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
与convientionalsql一样,如果我不使用
groupby
,将返回每一行

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

有什么可以让所有3行都返回的吗?

此行为是:

如果SELECT语句是没有GROUP BY子句的聚合查询,则在整个数据集中对结果集中的每个聚合表达式求值一次。对于数据集的任意选定行,结果集中的每个非聚合表达式都计算一次。每个非聚合表达式使用相同的任意选定行。或者,如果数据集包含零行,则针对完全由空值组成的行计算每个非聚合表达式

您可以这样做:

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

试试这个你可以使用交叉连接

SELECT a.name, b.totalHeart
FROM test_table a,
    (
        SELECT SUM(heart) totalHeart
        FROM test_table
    ) b

我不认为有“方便SQL”这样的东西。