我们观察到,如果我们在子查询上应用group并且不使用聚合操作(如count或sum),则Sqlite总是只返回一行。
这是一个玩具示例:
给出表
CREATE TABLE ExampleTable (
id INT PRIMARY KEY,
rank INT NOT NULL
);
带数据
INSERT INTO ExampleTable(id, rank) VALUES (1, 1);
INSERT INTO ExampleTable(id, rank) VALUES (2, 2);
INSERT INTO ExampleTable(id, rank) VALUES (3, 2);
查询
SELECT rank, COUNT(*) FROM (select id, rank from ExampleTable) GROUP BY rank;
返回
rank|count
2|2
1|1
但是,如果没有COUNT操作,Sqlite只返回1行。
SELECT rank FROM (select id, rank from ExampleTable) GROUP BY rank;
=>
rank
1
这是错误还是预期的行为?