MySQL 数値による順序付け、Null は最後にする 質問する

MySQL 数値による順序付け、Null は最後にする 質問する

現在、ステートメントで非常に基本的な OrderBy を実行しています。

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

これの問題は、「位置」の NULL エントリが 0 として扱われることです。したがって、位置が NULL のすべてのエントリは、1、2、3、4 のエントリの前に表示されます。例:

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

次の順序を実現する方法はありますか?

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

ベストアンサー1

MySQL には、null を最後にソートする文書化されていない構文があります。列名の前にマイナス記号 (-) を付け、ASC を DESC に切り替えます。

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

これは本質的には NULL 値を最後に配置することの逆ですposition DESCが、それ以外は と同じですposition ASC

良い参考資料はここにありますhttp://troels.arvin.dk/db/rdbms#select-order_by

おすすめ記事