2016-12-13 10 views
0

データベースクエリに問題があります。私はテーブルの最大値を選択しようとしていますが、残念ながらテーブルの先頭に0がありません。フィールドのID番号は9999から10000に変更されましたが、MAX( 'id')を取得しようとするとは10000の代わりに9999を返します。私はこの問題が9999が09999ではないという事実によると仮定しています。単純なグーグルではこの問題に答えるようには見えません。彼らはそこにいません。MYSQLI先行ゼロのない最大INTを選択

SELECT MAX(id) as MaxID FROM Orders 

先行ゼロがない場合に最大値を選択する方法はありますか?

+0

がない問題は確かにありませんデータ型が数値の場合は先頭のゼロです。列IDはどのデータ型ですか? – DZDomi

+1

(私が下でコメントしたように)フィールドが何に設定されているかを調べるのは私には起こりませんでした。それはあとでVarCharに設定されました。今私は気が気になりません...他のテーブルのこの番号にデータベースの他のすべてのインスタンスはINTに設定されていたので、私はそれがINTであると仮定したと思います。 INTに設定するとすべてが修正されました。 –

答えて

0

数値を文字列として保存すると、値のソート方法が変わります。

あなたがゼロを追加することによって、数値に変換することができます

SELECT MAX(id+0) as MaxID 
FROM Orders; 

それとも、あなたはORDER BYLIMITで最大値を取得することができます。

select o.* 
from orders o 
order by length(id) desc, id desc 
limit 1; 
+0

フィールドがどのように設定されているかを確認するために私には起こりませんでした、それは後にVarCharに設定されました... doh!他のテーブルのこの番号に対するデータベースの他のすべてのインスタンスはINTに設定されていたので、私はそれがINTであると仮定したと思います。 INTに設定するとすべてが修正されました。迅速な回答ありがとうございます。 –

+1

約8分で答えることができたら、これを正解に設定します。 –

+0

"数字に変換すると数字に変換できます"。トートロジー? – Barmar

関連する問題