3

我有以下 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

与传统 SQL 一样,如果我不使用GROUP BY,则将返回每一行。

http://www.w3schools.com/sql/sql_groupby.asp

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

4

2 回答 2

3

试试这个你可以使用cross join

SELECT a.name, b.totalHeart
FROM test_table a,
    (
        SELECT SUM(heart) totalHeart
        FROM test_table
    ) b
于 2012-07-27T07:28:43.673 回答
0

这种行为记录在案

如果 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
于 2012-07-27T06:46:50.567 回答