- ベストアンサー
order by int型の降順(DESC)でnullも混ざっている時、nullは下の方にするには?
すみません。 postgreSQLでint型をorder byする時、 null も混ざっているのですが、 null は下の方の順番(1より下(0以下はないとして))に来るようにするには、 通常どのように書くものでしょうか??? もしかしたら簡単な事かもしれなくて、 もうしわけないのですが、どなたかよろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1回答者です。 降順という質問でしたね。以下のSQLで大丈夫だと 思います。 select * from (select c1,c2,coalesce(c3,0) from u1.t1) as wt1(wc1,wc2,wc3) order by wc3 desc
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
回答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するために、一時的に 仮想の表名を使えるようにして います。
お礼
回答ありがとうございます。 改めて自分の書いた質問文を読むと、意味が分かり難い文になっていますが、そんな質問にも親切に回答していただいて嬉しいです。 なるほど~。こういう書き方もできるのですね。coalesce()関数というのは知らなかったので勉強になりました。ありがとうございます。 実は、質問した後自分でこういう風に書いたらできるんじゃないかな~と思って、やってみたら、できました↓ SELECT a,case when b is null then 0 else b end as tmpb FROM tablename ORDER BY tmpb DESC ; これも考え方としては、null だったら 0 とみなす、という風です。 いろいろなやり方があってSQLは奥が深いですね。