1. ホーム
  2. マイスル

[解決済み】MySQL Orderby a number, Nulls last

2022-03-27 08:42:20

質問

現在、私は自分のステートメントの中で非常に基本的なOrderByを行っています。

SELECT * FROM tablename WHERE visible=1 ORDER BY position ASC, id DESC

この問題は、'position' が NULL のエントリは 0 として扱われるため、position が NULL のエントリはすべて 1,2,3,4 のエントリの前に表示されることです。

NULL, NULL, NULL, 1, 2, 3, 4

次のような順序を実現する方法はありますか。

1, 2, 3, 4, NULL, NULL, NULL.

解決方法は?

MySQL には、NULL を最後にソートする文書化されていない構文があります。 カラム名の前にマイナス記号(-)を置き、ASCをDESCに切り替えてください。

SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC, id DESC

の逆バージョンです。 position DESC は NULL 値を最後に置きますが、それ以外は position ASC .

良い参考文献はこちら http://troels.arvin.dk/db/rdbms#select-order_by