• ベストアンサー

order by int型の降順(DESC)でnullも混ざっている時、nullは下の方にするには?

すみません。 postgreSQLでint型をorder byする時、 null も混ざっているのですが、 null は下の方の順番(1より下(0以下はないとして))に来るようにするには、 通常どのように書くものでしょうか??? もしかしたら簡単な事かもしれなくて、 もうしわけないのですが、どなたかよろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1回答者です。 降順という質問でしたね。以下のSQLで大丈夫だと 思います。 select * from (select c1,c2,coalesce(c3,0) from u1.t1) as wt1(wc1,wc2,wc3) order by wc3 desc

michiko_
質問者

お礼

回答ありがとうございます。 改めて自分の書いた質問文を読むと、意味が分かり難い文になっていますが、そんな質問にも親切に回答していただいて嬉しいです。 なるほど~。こういう書き方もできるのですね。coalesce()関数というのは知らなかったので勉強になりました。ありがとうございます。 実は、質問した後自分でこういう風に書いたらできるんじゃないかな~と思って、やってみたら、できました↓ SELECT a,case when b is null then 0 else b end as tmpb FROM tablename ORDER BY tmpb DESC ; これも考え方としては、null だったら 0 とみなす、という風です。 いろいろなやり方があってSQLは奥が深いですね。

その他の回答 (1)

回答No.1

select * from (select c1,c2,coalesce(c3,0) from u1.t1) as wt1(wc1,wc2,wc3) order by wc3 coalesce関数・・・引数の並びで最初のnullでない値を          返す。今回の場合、0以下はないとの          ことなので、「もしnullなら0を返 す」という使い方にしました。 一時的な表名=wt1・・・上記関数で0に置き換えた状態で           order byするために、一時的に           仮想の表名を使えるようにして           います。

関連するQ&A