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

最初にアルファベットで注文し、次にMySQLで番号を続けますか?


ORDERBY句で正規表現を使用する必要があります。構文は次のとおりです。

SELECT *FROM yourTableName
ORDER BY IF(yourColumnName RLIKE '^[a-z]', 1, 2),yourColumnName;

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです。

mysql> create table AlphabetFirstThenNumberDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(20),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.95 sec)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです。

mysql> insert into AlphabetFirstThenNumberDemo(Name) values('John');
Query OK, 1 row affected (0.37 sec)
mysql> insert into AlphabetFirstThenNumberDemo(Name) values('Bob');
Query OK, 1 row affected (0.21 sec)
mysql> insert into AlphabetFirstThenNumberDemo(Name) values('1Sam');
Query OK, 1 row affected (0.17 sec)
mysql> insert into AlphabetFirstThenNumberDemo(Name) values('Carol');
Query OK, 1 row affected (0.22 sec)
mysql> insert into AlphabetFirstThenNumberDemo(Name) values('2Larry');
Query OK, 1 row affected (0.31 sec)
mysql> insert into AlphabetFirstThenNumberDemo(Name) values('David');
Query OK, 1 row affected (0.27 sec)
mysql> insert into AlphabetFirstThenNumberDemo(Name) values('3Mike');
Query OK, 1 row affected (0.14 sec)
mysql> insert into AlphabetFirstThenNumberDemo(Name) values('Robert');
Query OK, 1 row affected (0.10 sec)

これで、selectステートメントを使用してテーブルのすべてのレコードを表示できます。クエリは次のとおりです。

mysql> select *from AlphabetFirstThenNumberDemo;

出力は次のとおりです。

+----+--------+
| Id | Name   |
+----+--------+
|  1 | John   |
|  2 | Bob    |
|  3 | 1Sam   |
|  4 | Carol  |
|  5 | 2Larry |
|  6 | David  |
|  7 | 3Mike  |
|  8 | Robert |
+----+--------+
8 rows in set (0.00 sec)

これは、最初にアルファベット、次に数字の順にクエリを並べたものです。クエリは次のとおりです。

mysql> select *from AlphabetFirstThenNumberDemo
   -> ORDER BY IF(Name RLIKE '^[a-z]', 1, 2),Name;

出力は次のとおりです。

+----+--------+
| Id | Name   |
+----+--------+
|  2 | Bob    |
|  4 | Carol  |
|  6 | David  |
|  1 | John   |
|  8 | Robert |
|  3 | 1Sam   |
|  5 | 2Larry |
|  7 | 3Mike  |
+----+--------+
8 rows in set (0.00 sec)

  1. MySQLクエリを複数のIDで並べ替えますか?

    これには、ORDER BY FIELD()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable(    ClientId varchar(40),    ClientName varchar(40) ); Query OK, 0 rows affected (0.55 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('987_John','John'); Q

  2. 最初に過去3か月で注文し、次にMySQLでアルファベット順に注文しますか?

    まずテーブルを作成しましょう- mysql> create table DemoTable1526    -> (    -> CustomerName varchar(20),    -> PurchaseDate date    -> ); Query OK, 0 rows affected (0.67 sec) 挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。ここに、2019年の日付を挿入しました- mysql> insert into DemoTabl