【MYSQL】0を末尾までソートし、その他の値を正の順に表示するにはどうすればよいですか?

背景: ランキングを表示するには 1、2、3、4、5 が必要ですが、ランキングのない一部のデータ フィールドのデフォルト値は 0 であり、ASC を直接使用すると問題が発生します。

効果を達成する

実装方法:MySQLのORDER BY文を利用して実現します。以下は SQL クエリ ステートメントのサンプルです。

SELECT * FROM table_name
ORDER BY CASE WHEN column_name = 0 THEN 1 ELSE 0 END, column_name ASC;

上記の例では、table_name はテーブル名、column_name は並べ替えの基準となる列名です。
SQL ステートメントの意味を説明します。

CASE WHEN column_name = 0 THEN 1 ELSE 0 END: これは、column_name の値が 0 の場合は 1 を返し、それ以外の場合は 0 を返す条件式です。これにより、0 の値は 1 としてマークされ、その他の値は 0 としてマークされます。

ORDER BY CASE WHEN column_name = 0 THEN 1 ELSE 0 END, column_name ASC: これは並べ替え部分です。まず、前の条件式の結果に従ってソートします。つまり、0 から最後までソートします。次に、column_name の昇順にソートします。
上記の SQL クエリ ステートメントにより、0 を最後までランク付けし、他の値を正の順序で表示する効果を実現できます。TP5 のクエリ ビルダーで同様の構文を使用すると、同じ効果を得ることができます。

おすすめ

転載: blog.csdn.net/gjwgjw1111/article/details/132517776
おすすめ