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 句のない集計クエリである場合、結果セット内の各集計式はデータセット全体で 1 回評価されます。結果セット内の各非集計式は、データセットの任意に選択された行に対して 1 回評価されます。各非集計式には、任意に選択された同じ行が使用されます。または、データセットに含まれる行が 0 の場合、各非集計式は、完全に 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 に答える