
MAX関数でmysql5のENUM列の内部番号が最大の値を取得したいのですが、文字列としての最大値が取得されてしまいます
(x_x)
enum(
'牡2','牡3','牡4','牡5','牡6','牡7','牡8','牡9','牡10','牡11',
'牝2','牝3','牝4','牝5','牝6','牝7','牝8','牝9',
'せん2','せん3','せん4','せん5','せん6','せん7','せん8','せん9','せん10'
)
例えば上の列の場合max関数は'牡9'を返しますが、どうにかして'せん10'を返すようにできないでしょうか・・・
ORDER BY DESCでは'せん10'が先頭になるので、max()も、どうにかすればできるのではと思った次第です
No.2ベストアンサー
- 回答日時:
マニュアルを、少しは見ましたか?
ENUM列に対し、+0といった操作をすると、インデクス値を得られます。
すなわち、インデクス値が最大のもの、最小のものも、これを利用することで得られます。
例)
select * from t1 where data+0=(select max(data+0) from t1);
ただし、こういった演算を行うと、仮にインデクスが定義されていても、MySQLは活用してくれませんので、データ量が数十万件以上といいった場合は、テーブル設計を見直したほうがいいでしょう。
参考URL:http://dev.mysql.com/doc/refman/5.1/ja/enum.html
こんにちは!
マニュアルを、少しは見ました
しかし、そこは触れないでいただきたかった^^;
マニュアルが面倒だから聞きに来たのです。と説明することも最近はおっくうになってしまったもので・・・
ENUMのインデクスの利用法について、よく分かりました。
しかしWHEREでやるとMAX()条件に一致した行しか取れないので、これを参考にさらにトリッキーなSQLを組み立てることになりそうです。
私としてはMAX()一本で簡単に取れる方法があればと思っていたのですが、どうやら無理そうですね・・・
しかしながら私はすでにMAX()を使わずに、そこそこいい感じのSQLをこしらえることができたので、今回はこれでよしとします;;
No.3
- 回答日時:
>マニュアルが面倒だから聞きに来たのです
それは言っちゃまずいですね、嘘でもマニュアル見たけど解らなかったと
言わないと、「教えてクン」認定されますよ
ちなみに、ORDER BY DESC して LIMIT 1をとってもだめですかね?
その件に関しては私も主張したいのですが、ぐっと我慢します!
論争が激しくなると、また削除隊に動かれるので^^
ORDER BYでインデクス順に整列できることは確認済ですが、LIMIT 1だと1行しか取れないので、MAX()一本で簡単に取れる方法があればと思った次第です。
No.1
- 回答日時:
MIN()じゃないの?・・・というツッコミはおいておいて
きちんとやりたいならenumなど使わず、外部キー制約をつかって
子テーブル側でソート用のデータを指定しておくなどが有効でしょう
こんにちは!!
MIN()にしたら見事に'せん10'が返りました!
しかし、これは偶然のたまものに過ぎず'せん10'がない状況では'せん2'(望む値は'せん9')が返りました
やはりmysqlの集約関数では難しそうですね。
テーブル構成を変更するのは非現実的なので、当該案件はあきらめることとなりそうです・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlがインストールされている...
-
SQLでカラムを追加し、条件に合...
-
テーブル名が可変の場合のクエ...
-
MySQLのテーブル作成でハイフン...
-
SQLです!!教えてください。
-
MySQLのセキュリティ管理について
-
MAMPで80ポートが使用されている...
-
同一日に複数レコードがある場...
-
MAMP 99ドル約1.6万円 高い...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cseデータ閲覧時に文字化け
-
Mysql char
-
列名を式で指定することはでき...
-
シングルクォーテーションとダ...
-
パスワードの暗号化
-
MYSQLへのデータサイズの大きな...
-
文字列分割して、ソート出来ま...
-
postgre ⇒ mysql にした場合...
-
Usage: \\.<filename> | sourc...
-
MySQLに画像を保存したい
-
MySQLでのデータ保存場所の変更
-
"文字列"? > CSVデータをMySQL...
-
mysqlへのインポート処理がうま...
-
mysqlコマンドでSQL文が実行で...
-
'とはなんでしょうか
-
ERROR 1054 (42S22) 原因不明です
-
MAX()でENUMの内部番号が最大の...
-
MySQLのLOAD DATA INFILEコマン...
-
MySQLカラム名は日本語と英数字...
-
mysqlがインストールされている...
おすすめ情報