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で質問しましょう!
似たような質問が見つかりました
- 競馬 社台系や金子氏の馬が登場するゲームってありますか? 1 2022/11/15 10:58
- 生物学 牡蠣が居なくなった?? 祖父母の家が瀬戸内海沿いにあります。 子供の頃はよく、海岸の岩についた牡蠣を 6 2022/07/24 01:24
- 競馬 競馬初心者です 2 2022/05/30 14:38
- その他(ニュース・社会制度・災害) 岸田首相は広島サミットで各国首脳にお好み焼きを振る舞ったそうですが... 4 2023/05/19 23:03
- 食中毒・ノロウイルス この方法でどのようにしてバレるのでしょうか?? 3 2022/07/16 18:26
- 北海道 私は札幌に住んでますが、最近初めて生牡蠣を食べました。どうしてあんなに美味いものを食べてこなかったの 2 2022/04/07 16:26
- 恋愛占い・恋愛運 B型牡牛座女とO型牡羊座男の相性はどんなものですか?悪いんですかね、どうですかね?わかりません。よろ 1 2023/04/21 22:34
- 宇宙科学・天文学・天気 西洋の星座の命名でいちいち雌雄を分けるのは? 5 2023/01/07 10:20
- 食べ物・食材 先日牡蠣を注文しました。 日時指定をして、その日のうちに剥いたのですが、想像していたよりも色が黄色み 2 2022/08/21 10:30
- 競馬 去勢した競走馬が早く強くなると、馬主はジレンマですか? 種牡馬になれないから 4 2023/04/21 07:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlへのインポート処理がうま...
-
ERROR 1054 (42S22) 原因不明です
-
接続ができません
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
SQLのVARCHARとVARCHAR2の違い
-
プライマリーキーの昇順でソー...
-
二進数を勉強しているのですが...
-
VBAで変数内に保持された二次配...
-
MySQLカラム名は日本語と英数字...
-
my.cnf と my.ini の違い
-
列数が多いと結果が行単位に改...
-
mysql+php リストボックスにつ...
-
ポート3306へつながらず、MySQL...
-
Btrieveのコンバートしたいので...
-
like句を使って日本語を検索す...
-
phpからinsertできない
-
RPMのmysqlとmysql-serverの違い
-
旧filemakerで和暦(令和など)...
-
INT型は金額の型に使用するべき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysqlへのインポート処理がうま...
-
cseデータ閲覧時に文字化け
-
mysqlコマンドでSQL文が実行で...
-
シングルクォーテーションとダ...
-
Usage: \\.<filename> | sourc...
-
mysqlのmatch() against()で検...
-
SELECTした値との比較
-
MAX()でENUMの内部番号が最大の...
-
MySQLでのデータ保存場所の変更
-
MySQLのLOAD DATA INFILEコマン...
-
MySQLのデータの互換性は?
-
ERROR 1054 (42S22) 原因不明です
-
MYSQLへのデータサイズの大きな...
-
postgre ⇒ mysql にした場合...
-
Mysql char
-
MySQLリファレンスマニュアル(...
-
列名を式で指定することはでき...
-
PHPの質問です、ご回答いただけ...
-
mysql超初心者です。テーブルへ...
-
MySQLで困っています。。
おすすめ情報