-1
UserID    UserName  Password

1                abc               123
10               xyz               456
3                mno               254

SELECT MAX(UserId) AS UserId FROM UserLogin

このクエリを実行すると、10 ではなく 3 が返されます

すべての列は TEXT データ型です

4

3 に答える 3

13

3辞書式順序を考慮した最大値であるため、クエリが返されます ( で始まるものは で始まるものよりも大きいのと同様に、 で始まるものは で始まるもの3よりも大きいと見なされます)。1ba

関数を使用してVAL、TEXT 列を数値に変換します。

SELECT MAX(VAL(UserId)) AS UserId FROM UserLogin

ただし、パフォーマンスが気になる場合は、この列を数値にする必要があります。テーブル内のすべての行に対して関数を呼び出していることを考慮してください。また、この列が持つ可能性のあるインデックスは使用されません。

于 2013-05-03T09:28:54.887 に答える
5

列の型が varchar や string ではなく、数値であることを確認してください。

于 2013-05-03T09:26:45.587 に答える