読者です 読者をやめる 読者になる 読者になる

ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

order by実行時のNULLの扱い

新人の頃のメモ書きを見返していたら、Oracleでは NULL が常に最大値扱いとなるとあったので、 以下のDBについてどのような挙動になるか調べてみた。

環境


genzouw@genzouw-macbook-pro:~$ mysql -V
mysql  Ver 14.14 Distrib 5.6.13, for osx10.8 (x86_64) using  EditLine wrapper
genzouw@genzouw-macbook-pro:~$ psql -V
psql (PostgreSQL) 9.3.1

調査

以下の様なテーブルとデータを作成してみた。

MySQL

PostgreSQL

それぞれソートしてみる。

MySQL


mysql> select * from mytable order by column1;
+----+---------+
| id | column1 |
+----+---------+
|  5 | NULL    |
|  3 | 1       |
|  4 | 2       |
|  1 | a       |
|  2 | b       |
+----+---------+
5 rows in set (0.00 sec)

PostgreSQL


testdb=> select * from mytable order by column1;
 id | column1
----+---------
  3 | 1
  4 | 2
  1 | a
  2 | b
  5 |
(5 rows)

ということで、ソート時の NULLの扱いが異なる

まとめ

Oracleは試していないが、メモを見る限り PostgreSQLと同じ

MySQL PostgreSQL Oracle
最小 最大 最大
広告を非表示にする