
No.1ベストアンサー
- 回答日時:
null を取り得る項目は、 COALESCE を被せて null の場合はその型の最小値を取るようにするとか。
例) ------------------------------------
SELECT * FROM hoge
ORDER BY GREATEST(a, COALESCE(b, -2147483648)) DESC;
もしくは、CASE式を使ってnull判定をするとか。
例) ------------------------------------
SELECT * FROM hoge
ORDER BY CASE WHEN b IS NOT NULL THEN GREATEST(a, b) ELSE a END DESC;
SELECT * FROM hoge
ORDER BY CASE WHEN b IS NULL THEN a WHEN b > a THEN b ELSE a END DESC;
> 後、MAXとは何が違うのでしょうか?
MAXは集約関数ですから、複数のレコード(タプル)の指定されたカラム(属性)の最大値を求める関数ですね。一方、GREATEST は与えられた引数の中から最大のものを取り出す関数です。
感覚的には、MAXは縦の中の最大値を求め、GREATESTは横の中の最大値を求めるという感じですね。
http://dev.mysql.com/doc/refman/5.1/ja/compariso …
http://dev.mysql.com/doc/refman/5.1/ja/group-by- …
No.2
- 回答日時:
order by GREATEST(a,IFNULL(b,a)) desc
でもできるようです。
※IFNULL(b,a) bがNullでなければb、Nullならaを返す。
基本的にはANo.1のかたの方法でいいと思いますが、
他の方法も示しておこうかなと思って書いています。
なお以下は蛇足です。
上のIFNULL同様に、
GREATEST(a, COALESCE(b, -2147483648)) DESC;
は、
GREATEST(a, COALESCE(b, a)) DESC;
でいいのではないかなと思いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UNIONする際、片方テーブルしか...
-
SELECT文で、指定カラム以外の...
-
AUTO_INCREMENTに0はダメ?
-
カラムとコラムの使い分け
-
構造が異なる二つのテーブルをu...
-
SQLでカラムを追加し、条件に合...
-
エクセルかワードで家系図を作...
-
SELECTの検索速度と、DB設計
-
GREATESTで NULLをスルーする方...
-
【SQL】select に ワイルドカー...
-
ドロップダウンリストの連動し...
-
ホームページを作ろうと思いま...
-
DBエラーの意味
-
now()かCURRENT_TIMESTAMPか
-
一部のカラムでdistinctし全て...
-
他のシートの検索
-
INDIRECT関数の代替方法は?
-
複数カラムに対するLIKE文の最適化
-
DBの定義のサイズを大きくし過...
-
テーブルの列数を調べたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT文で、指定カラム以外の...
-
一部のカラムでdistinctし全て...
-
UNIONする際、片方テーブルしか...
-
ホームページを作ろうと思いま...
-
AUTO_INCREMENTに0はダメ?
-
SQLでカラムを追加し、条件に合...
-
MYSQLで全てのカラムから検索す...
-
now()かCURRENT_TIMESTAMPか
-
カラムとコラムの使い分け
-
MySQLで論理名を取得する方法
-
GREATESTで NULLをスルーする方...
-
【SQL】select に ワイルドカー...
-
エクセルかワードで家系図を作...
-
カラムをコピーして、新規カラ...
-
波形データを格納するデータベース
-
update時にtimestampが更新され...
-
カラム表示の幅
-
アドレスブックの登録について
-
最大2147483647なのに何故int(1...
-
MySQLで先頭にカラムを追加
おすすめ情報