人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MYSQLでtblというテーブルにtime,count,tagというフィールドの他にCategory1?Category27のフィールドがあります。tag以外はどれもint型です。
Category1?27でどれかが最大値がM以上である かつ countがN以上であるという条件でSELECTしたいのですが、
WHERE MAX(Category1)>=M OR ... OR MAX(Category27)>=M
のように書くしかないのでしょうか?いい書き方があれば教えてください。

また、このSQL文に「Category1?27でどれかが最大値がM以上である」という条件を適用するとどうなるでしょうか?
http://q.hatena.ne.jp/1277630884#a1024004

●質問者: GanbareNIPPON
●カテゴリ:コンピュータ
✍キーワード:Max MySQL SELECT SQL tag
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ホーエンハイム
●27ポイント

コメントありがとうございます。


条件式は以下のようになります。

WHERE Category1>=M OR ... OR Category27>=M AND count>=N

2 ● MR
●27ポイント

WHERE Category1>=M OR ... OR Category27>=M AND count>=N

↑と同じくこうなります


3 ● chuken_kenkou
●26ポイント

MySQLのバージョンを、最低限でもMySQL 4.0、4.1、5.0といったレベルまで明記願います。大きな機能追加や一部の仕様変更があります。

正規化していないために、こんな苦労をするということは分かった上での質問ですよね?

GREATEST関数で、各行のCategory1?27の最大値を拾って、Mと比較する方法はどうでしょうか?

SELECT * FROM tbl
 WHERE GREATEST(Category1,Category2, <中略> ,Category27)>=M
 AND `count`>=N

MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.1.3 比較関数と演算子

◎質問者からの返答

おおおおお、まさにこれです!

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ