例えばひとつの列を普通の値は降順でソートして、かつNULLは最後に持ってくるにはどうしたらいいでしょうか?
OracleではNULL LASTがあるというページしか出てこなかったのですが…。
http://www.hatena.ne.jp/1079017459#
PostgreSQLで NULL 値の順序はどうやって決めるのでしょう。 例えばひとつの列を普通の値は降順でソートして、かつNULLは最後に持ってくるにはどうしたらいいでしょうか? .. - 人力検索はてな
URLはダミーです
もっとスマートな方法があるかも知れないですが・・・
CASE等でNULL判定してNULLだったら’1’、それ以外なら’0’みたいなフィールドを作って、それをORDER句の優先条件に含めることで実現はできると思います・・・
ベタな方法ですが・・・
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/psql_k10.htm
PostgreSQL 編10 - 問い合わせ、抽出、ソート、where、like、order by、desc - SAK Streets
こちらのページ参考になるとおもいます。
ここは時々見ますがNULLの順序までは書いてないですよね…?
http://www.hatena.ne.jp/1079017459#
PostgreSQLで NULL 値の順序はどうやって決めるのでしょう。 例えばひとつの列を普通の値は降順でソートして、かつNULLは最後に持ってくるにはどうしたらいいでしょうか? .. - 人力検索はてな
select * from table where fieldname is not null order by fieldname union select * from table where fieldname is null;
みたいな感じでどうでしょう?
エラーになってしまうのですが、union の前に order by は使えたでしょうか?
union の動作が今ひとつわからないです…。
http://ml.postgresql.jp/pipermail/pgsql-jp/2003-December/006932....
[pgsql-jp: 31790] Re: NULLの存在する列の逆順ソート
これでよいと思いますが。
無事できました。ありがとうございます。
すみません。確認せずに書いてしまいました。
select
fieldname
from (
select
fieldname
from
tablename
where
fieldname is not null
order by
fieldname desc
) as foo
union all
select
fieldname
from (
select
fieldname
from
tablename
where
fieldname is null
order by fieldname desc
) as bar
;
でいけると思います。
一度別の名前にするということですね。今後の参考にします。
コレで出来ないでしょうか?
SELECT * FROM table_name ORDER BY COALESCE(sort_key, ’zzzzzz’);
PostgreSQLを使用したことがないので、もしエラーが出るようでしたらポイントは結構です。
関数は使えるのですが思うようにソートされないです。。
order by でも coalesce は使えるのですね。
ありがとうございます。試してみましたがSQL文が結構長くなってしまいますね…。