eLe*_*ner 1 sqlite max aggregate-functions min
我有一个排名表,其架构被定义为rank(id,key,value),其中key是主键
sqlite> .schema rank
CREATE TABLE 'rank' ( ID VARCHAR, KEY VARCHAR, VALUE VARCHAR NOT NULL );
CREATE INDEX 'rank_id___djklaf3451jlZZZRFfa___' ON 'rank' ( ID );
sqlite> select * from rank;
-----------------------------------------------------
Tymb-W64uwvM|Tymc8LPQnxBg|5
TymdPRdFpBcE|TymdSsaIFhuI|2
TymdPRdFpBcE|TymdjkGgExcE|3
TymeVf6N1RH4|TymeZGxydCJ8|3
TymeVf6N1RH4|Tymeecz1ORW8|20
sqlite> select id,min(value) from rank group by id;
------------------------------------------------------
Tymb-W64uwvM|5
TymdPRdFpBcE|2
TymeVf6N1RH4|20
sqlite> select id,max(value) from rank group by id;
------------------------------------------------------
Tymb-W64uwvM|5
TymdPRdFpBcE|3
TymeVf6N1RH4|3
Run Code Online (Sandbox Code Playgroud)
如您所见,最小和最大功能的第3个结果都不正确.sqlite版本是3.6.23.
有什么建议?
这是因为value是一种字符类型(特别是varchar)而不是数字类型.
如果您正在对字符数据进行排序,则表示为:
2
20
3
3
5
Run Code Online (Sandbox Code Playgroud)
如果你执行了这就是你会看到的:
select value from rank order by value asc
Run Code Online (Sandbox Code Playgroud)
如果要对其进行数字排序,则应将列定义为数字类型,例如integer.
| 归档时间: |
|
| 查看次数: |
1800 次 |
| 最近记录: |