プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

#1回答者です。


降順という質問でしたね。以下のSQLで大丈夫だと
思います。

select * from (select c1,c2,coalesce(c3,0) from u1.t1) as wt1(wc1,wc2,wc3)
order by wc3 desc
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
改めて自分の書いた質問文を読むと、意味が分かり難い文になっていますが、そんな質問にも親切に回答していただいて嬉しいです。

なるほど~。こういう書き方もできるのですね。coalesce()関数というのは知らなかったので勉強になりました。ありがとうございます。

実は、質問した後自分でこういう風に書いたらできるんじゃないかな~と思って、やってみたら、できました↓

SELECT a,case when b is null then 0 else b end as tmpb FROM tablename ORDER BY tmpb DESC ;

これも考え方としては、null だったら 0 とみなす、という風です。
いろいろなやり方があってSQLは奥が深いですね。

お礼日時:2005/11/09 19:42

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するために、一時的に
          仮想の表名を使えるようにして
          います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!