MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【MySQL】値0以外の整数を並べ替えて0を最後に表示する方法

MySQLで値0以外の整数を並べ替える方法

MySQLでは、ORDER BY句を工夫することで、値0以外の整数を昇順または降順に並べ替えつつ、0のレコードを最後に表示することができます。本記事では、その具体的な方法をサンプルコードとともに解説します。

基本構文

値0以外の整数を並べ替えるには、以下の構文を使用します。

select *from yourTableName order by yourColumnName=0, yourColumnName;

ポイントは「yourColumnName=0」という条件式です。この式は、値が0の場合に1(TRUE)、0以外の場合に0(FALSE)を返します。昇順ソートでは0以外の値が先頭に来て、0のレコードが最後に配置される仕組みです。

サンプルテーブルの作成

まず、テーブルを作成しましょう。

mysql> create table reorderIntegerExcept0
-> (
-> value int
-> );
Query OK, 0 rows affected (0.70 sec)

レコードの挿入

次に、insertコマンドを使用してテーブルにレコードを挿入します。

mysql> insert into reorderIntegerExcept0 values(90);
Query OK, 1 row affected (0.17 sec)

mysql> insert into reorderIntegerExcept0 values(10);
Query OK, 1 row affected (0.21 sec)

mysql> insert into reorderIntegerExcept0 values(0);
Query OK, 1 row affected (0.18 sec)

mysql> insert into reorderIntegerExcept0 values(40);
Query OK, 1 row affected (0.18 sec)

mysql> insert into reorderIntegerExcept0 values(0);
Query OK, 1 row affected (0.09 sec)

mysql> insert into reorderIntegerExcept0 values(50);
Query OK, 1 row affected (0.17 sec)

mysql> insert into reorderIntegerExcept0 values(80);
Query OK, 1 row affected (0.13 sec)

mysql> insert into reorderIntegerExcept0 values(0);
Query OK, 1 row affected (0.10 sec)

mysql> insert into reorderIntegerExcept0 values(300);
Query OK, 1 row affected (0.20 sec)

テーブルの全レコードを表示

select文を使用して、テーブルのすべてのレコードを表示します。

mysql> select * from reorderIntegerExcept0;

実行結果は以下のとおりです。

+-------+
| value |
+-------+
| 90 |
| 10 |
| 0 |
| 40 |
| 0 |
| 50 |
| 80 |
| 0 |
| 300 |
+-------+
9 rows in set (0.00 sec)

値0以外の整数を昇順で並べ替える

以下のクエリで、値0以外の整数を昇順に並べ替えることができます。

mysql> select * from reorderIntegerExcept0 order by value=0, value;

実行結果は以下のとおりです。0以外の値が昇順で並び、0のレコードが最後に表示されていることが確認できます。

+-------+
| value |
+-------+
| 10 |
| 40 |
| 50 |
| 80 |
| 90 |
| 300 |
| 0 |
| 0 |
| 0 |
+-------+
9 rows in set (0.00 sec)

値0以外の整数を降順で並べ替える

0以外の整数を降順で並べ替えたい場合は、以下のクエリを使用します。

mysql> select * from reorderIntegerExcept0 order by value=0, value DESC;

実行結果は以下のとおりです。

+-------+
| value |
+-------+
| 300 |
| 90 |
| 80 |
| 50 |
| 40 |
| 10 |
| 0 |
| 0 |
| 0 |
+-------+
9 rows in set (0.00 sec)

まとめ

MySQLで値0以外の整数を並べ替え、0を最後に表示したい場合は、ORDER BY句で「カラム名=0」という条件式を最初に指定するのが有効です。このテクニックを使えば、昇順・降順どちらのソートでも、0のレコードを簡単に末尾に配置できます。データの可読性を高めたい場面でぜひ活用してください。

  1. MySQLのCASE WHENで0と1の値を持つ列に条件を設定する方法

    MySQLで条件を設定するには、CASE WHENステートメントを使用します。本記事では、0または1の値を持つ複数の列に対して条件を設定し、その合計値に応じてステータスを判定する方法を、具体的なサンプルコードとともに解説します。1. テーブルを作成するまず、CREATE TABLE文でサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> Value1 int, -> Value2 int, -> Value3 int, -> Value4 int -> );Qu

  2. MySQLでNOT NULLの値に対して1を設定する方法(IF関数とIS NOT NULLの使い方)

    MySQLでNOT NULLの値に1を設定するにはMySQLでは、IS NOT NULL演算子とIF()関数を組み合わせることで、値がNULLでない場合に「1」、NULLの場合に「0」を返すことができます。データの存在チェックやフラグ管理など、さまざまな場面で活用できる便利なテクニックです。基本構文NOT NULLかどうかを判定して1を設定する基本構文は以下のとおりです。select if( is not NULL,1,0) as anyAliasName;実際に動作するクエリを見てみましょう。mysql> select if( is not NULL,1,0);このクエリを実行すると、