UserID UserName Password
1 abc 123
10 xyz 456
3 mno 254
SELECT MAX(UserId) AS UserId FROM UserLogin
当我运行此查询时,它给了我 3 而不是 10
所有列都是 TEXT 数据类型
UserID UserName Password
1 abc 123
10 xyz 456
3 mno 254
SELECT MAX(UserId) AS UserId FROM UserLogin
当我运行此查询时,它给了我 3 而不是 10
所有列都是 TEXT 数据类型
您的查询正在返回3
,因为它是考虑字典顺序的最大值(以 开头的任何内容都3
被认为大于以 开头的任何内容1
,就像以 开头的b
内容大于以 开头的任何内容一样a
)。
使用该VAL
函数将 TEXT 列转换为数值:
SELECT MAX(VAL(UserId)) AS UserId FROM UserLogin
但是,如果您担心性能,则应该将此列设为数字。考虑到您正在为表中的每一行调用一个函数。此外,它不会使用该列可能具有的任何索引。
确保列类型是数字而不是 varchar 或字符串。
尝试改变
SELECT MAX(val(UserId)) AS UserId FROM UserLogin