2

MySQL データベースに次のようなデータがあるとします。

01, 001, 2, 9, 009, 23, 15, 19, 09, 08, 1 etc. 

したがって、次のようにデータを昇順に並べ替えます。

001, 01, 1, 1, 2, 08, 009, 09, 9, 15, 19, 23 etc. 

を使用するORDER BY value ASCと、機能しません。並べ方はどうすればいいですか?最初の値を 1、次に 2、3 にしたい ..... それは可能ですか?

4

2 に答える 2

3

あなたが書いたものは整数で動作するはずです。ただし、あなたの質問から、指定している数値は文字列として保存されていると想定しているため、文字列としてソートされています。

その場合、ソートが正しく機能するように整数にキャストする必要があります。それは次のようなことをするのと同じくらい簡単です

ORDER BY <column> / 1 ASC, <column>

1 で乗算または除算すると、データベースは並べ替えの前に文字列を整数に変換します。001常に前に来る手段の 2 番目の使用1

質問を読み直すと1、表に1との両方が含まれていても、一度だけ表示されることを期待しているように思えます001。その場合は、次のようにします。

SELECT DISTINCT (<column> / 1) AS intcol
FROM ...
ORDER BY intcol
于 2013-09-23T13:15:13.353 に答える
3

これらは文字列として格納されるため、mysql が自動的に値を数値に解析するため、単純に 1 を掛けることができます。文字列が文字で始まる場合、値はゼロになります。

ORDER BY col * 1, col

ご覧のとおり、order by句にはキーワードがありませんASC。これは、オプティマイザがデフォルトで昇順でソートするためです。

于 2013-09-23T13:13:20.787 に答える