2012-07-27 53 views
3

單列我有以下的SQLite數據庫SQLite的返回,即使我不使用GROUP BY

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行?

+0

我不認爲有這樣的事,作爲 「convientional SQL」。 – 2012-07-27 07:31:44

回答

3

試試這個,你可以使用cross join

SELECT a.name, b.totalHeart 
FROM test_table a, 
    (
     SELECT SUM(heart) totalHeart 
     FROM test_table 
    ) b 
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