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

MySQLでASC順にレコードのリストのみを表示する方法

MySQLでレコードを特定の順序で表示したい場合、条件を設定した上でORDER BY句を使用する必要があります。このようなケースでは、ORDER BY CASEステートメントが非常に便利です。本記事では、特定のレコードを優先的に並べ替えつつ、残りのレコードを昇順(ASC)で表示する方法を解説します。

テーブルの作成

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable2039
-> (
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.62 sec)

レコードの挿入

次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable2039 values('John Doe');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable2039 values('John Smith');
Query OK, 1 row affected (0.08 sec)

mysql> insert into DemoTable2039 values('Chris Brown');
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable2039 values('Adam Smith');
Query OK, 1 row affected (0.10 sec)

mysql> insert into DemoTable2039 values('David Miller');
Query OK, 1 row affected (0.09 sec)

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

SELECTステートメントを使用して、テーブル内のすべてのレコードを確認してみましょう。

mysql> select *from DemoTable2039;

上記のクエリを実行すると、以下のような出力が得られます。

+--------------+
| Name |
+--------------+
| John Doe |
| John Smith |
| Chris Brown |
| Adam Smith |
| David Miller |
+--------------+
5 rows in set (0.00 sec)

ASC順で特定のレコードのリストを表示するクエリ

ここからが本題です。以下のクエリでは、ORDER BY CASEステートメントを使って、「Smith」という名前を含むレコードを後ろに配置し、それ以外のレコードを名前の昇順で表示しています。

mysql> select *from DemoTable2039
-> order by
-> case when Name like '%Smith%' then 101
-> else
-> 100
-> end,
-> Name;

このクエリの仕組みを簡単に説明すると、CASE式によって「Smith」を含む名前には101という値が割り当てられ、それ以外の名前には100が割り当てられます。その後、この値とNameカラムの両方でソートを行うことで、目的の順序を実現しています。

上記のクエリを実行すると、以下のような出力が得られます。

+--------------+
| Name |
+--------------+
| Chris Brown |
| David Miller |
| John Doe |
| Adam Smith |
| John Smith |
+--------------+
5 rows in set (0.37 sec)

出力結果を見ると、「Smith」を含まない「Chris Brown」「David Miller」「John Doe」が名前の昇順で先に表示され、「Adam Smith」「John Smith」が後に配置されていることがわかります。このようにORDER BY CASEを活用すれば、柔軟なカスタム並べ替えが可能になります。

  1. MySQLのROUND()関数で数値を四捨五入する方法

    MySQLで数値を丸めるには MySQLで数値を四捨五入(丸め)するには、ROUND()関数を使用します。この記事では、実際にテーブルを作成し、データを挿入したうえで、ROUND()関数を使って数値を丸める具体的な手順を実行結果付きで解説します。 1. テーブルの作成 まず、DECIMAL型のカラムを持つテーブルを作成します。 mysql> create table DemoTable -> ( -> Amount DECIMAL(10,4) -> ); Query OK, 0 rows affected (1.18 sec) 2. レコード

  2. MySQLでNULLを含む列からNULL以外(NOT NULL)の値だけを抽出して表示する方法

    MySQLのIS NOT NULLを使ってNULL以外の値のみを表示するMySQLで、NULLとNULL以外のレコードが混在する列からNULL以外の値だけを取得したい場合は、IS NOT NULL演算子を使用します。この記事では、実際にテーブルを作成しながら手順を解説します。1. テーブルの作成まず、日付型の列を持つサンプルテーブルを作成します。mysql> create table DemoTable1      (      DueDate date      ); Query OK, 0 ro