Sha*_*awn 2 sql sqlite group-by
请考虑下表:
CREATE TABLE t
(
a INTEGER NOT NULL,
b INTEGER NOT NULL,
c INTEGER,
PRIMARY KEY (a, b)
)
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样做:
SELECT a,b,c FROM t GROUP BY a;
Run Code Online (Sandbox Code Playgroud)
我希望只获得一次的每个不同值.但是因为我也要求b和c,所以它会为我的每个值提供一行.因此,如果对于a的单个值,有很多行可供选择,我该如何预测SQL将选择哪一行?我的测试显示它选择返回b最大的行.但那是什么逻辑呢?这将如何适用于blob或日期或其他任何字符串?
我的问题:SQL如何在将多行组合在一起时选择要显示哪一行?
顺便说一下:我的特殊问题与SQLITE3有关,但我猜这是一个不依赖于DBMS的SQL问题......
这实际上不应该在一个体面的DBMS中工作:-)
该group by子句中未使用的任何列都应受聚合函数的约束,例如:
select a, max(b), sum(c) from t group by a
Run Code Online (Sandbox Code Playgroud)
如果它没有在SQLite中抱怨(我没有直接的理由怀疑你),我只是把它归结为DBMS的构建方式.从内存来看,有一些领域并不过分担心数据的"纯度"(例如每列都能够容纳多种类型,属于该行/列中数据的类型而不是列规范).