2017-06-24 11 views
0

にvarchar型の列の最大値を取得私は、これらの値を持つvarchar型がある私の列の最大値を取得することができますどのようにデータベース

たとえば、私はvarchar型であると私は何をしたいことにあるMYIDのフィールド名を持っていますmyidフィールドの最大値を取得します。どのようにしてmyidカラムの1〜10の値を取得することができますか?あなたが示されてきたデータについては

myid 
1-1 
1-2 
1-3 
1-4 
1-5 
1-6 
1-7 
1-8 
1-10 
1-9 
+0

1-10は最大文字列値ではありません.1の場合(10の最初の文字)は、たとえば1-2の2より小さい値です。あなたの頭の中で、文字列を2つの数値に分割し、最初のものから順番に並べます。あなたはSQLで文字列funtionsと同じことをすることができますが、私は最初に文字列として値を格納しないことをお勧めしたいと思います。個別の数値に興味がある場合は、それらを1つの文字列ではなく2つの別々の数値列として格納します。 –

答えて

1

私はこのトリックを使用することをお勧めします:

order by length(myid) desc, myid desc 

これは、問題のデータのために動作します。

order by substring_index(myid, '-', 1) + 0, substring_index(myid, '-', -1) + 0 
+0

ありがとう..これは自動インクリメントの権利ですか? –

+0

@JcJohn。 。 。私はあなたの質問が何を意味するか分かりません。この質問と回答は、自動インクリメントされた列とは関係ありません。 –

+0

こんにちは。申し訳ありません。私が間違っているか、これが悪い質問であれば私を修正してください。私は主キーのために最後を取得し、PHPでそれを増やすことによって重複を停止するようにしています。これは正しいです? (tbl_check_up.check_up_id、 ' - '、1)+ 0、 substring_index(tbl_check_up.check_up_id、 ' - '、-1)+ 0 DESC LIMIT 1 –

1

:この場合

select myid 
from data_table 
order by cast(substr(myid, 3, 2) as int) desc 
limit 1; 

注文機能は、ダッシュ、次の識別子の一部の整数値です。一般的には - つまり、異なるデータまたはより複雑なデータの場合 - 適切なオーダー機能が何であるかを判断するだけです。

関連する問題