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

MySQLの「IN」句の(ORDER BY)位置で順序付けられた返されたレコードセットを取得します


レコードセットの順序を返すには、FIND_IN_SET()を使用する必要があります。まずテーブルを作成しましょう-

mysql> create table recordSetOrderDemo
   -> (
   -> EmployeeId int,
   -> EmployeeName varchar(30)
   -> );
Query OK, 0 rows affected (0.63 sec)

以下は、挿入コマンド-

を使用してテーブルにいくつかのレコードを挿入するためのクエリです。
mysql> insert into recordSetOrderDemo values(20,"John");
Query OK, 1 row affected (0.20 sec)

mysql> insert into recordSetOrderDemo values(10,"Larry");
Query OK, 1 row affected (0.14 sec)

mysql> insert into recordSetOrderDemo values(100,"Mike");
Query OK, 1 row affected (0.14 sec)

mysql> insert into recordSetOrderDemo values(50,"Sam");
Query OK, 1 row affected (0.11 sec)

mysql> insert into recordSetOrderDemo values(10,"David");
Query OK, 1 row affected (0.18 sec)

以下は、selectステートメント-

を使用してテーブルのすべてのレコードを表示するためのクエリです。
mysql> select *from recordSetOrderDemo;

これにより、次の出力が生成されます-

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
| 20         | John         |
| 10         | Larry        |
| 100        | Mike         |
| 50         | Sam          |
| 10         | David        |
+------------+--------------+
5 rows in set (0.00 sec)

以下は、レコードセットの順序を返すクエリです-

mysql> select *from recordSetOrderDemo where EmployeeId IN(100,10,20,50)
-> ORDER BY FIND_IN_SET(EmployeeId,'100,10,20,50');

これにより、次の出力が生成されます-

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
| 100        | Mike         |
| 10         | Larry        |
| 10         | David        |
| 20         | John         |
| 50         | Sam          |
+------------+--------------+
5 rows in set (0.03 sec)

  1. 一連の数字の最初の数字で並べ替えるMySQLクエリ?

    一連の番号の最初の番号で並べ替えるには、ORDER BY SUBSTRING_INDEX()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable (    SetOfNumbers text ); Query OK, 0 rows affected (0.53 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('245,654,76,89,98'); Query OK, 1 row affect

  2. 日付レコードを注文し、MySQLで2番目に注文されたレコードをフェッチします

    注文するには、ORDER BYを使用し、2番目に注文されたレコードのみをフェッチするには、MySQL LIMITを使用し、オフセットも設定します。まず、-を作成しましょう mysql> create table DemoTable1417    -> (    -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> CustomerName varchar(20),    -> ShippingDate date &nb