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

MySqlでWHERE`id`IN(…)を使用して正確な順序を指定するにはどうすればよいですか?


where id INで正確な順序を指定するには、find_in_set()関数を使用する必要があります。

構文は次のとおりです

SELECT *FROM yourTableName
WHERE yourColumnName IN (yourValue1,yourValue2,yourValue3,....N)
ORDER BY FIND_IN_SET(yourColumnName , ‘yourValue1,yourValue2,yourValue3,....N’');

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

mysql> create table FindInSetDemo
   - > (
   - > Id int,
   - > Name varchar(20),
   - > Age int
   - > );
Query OK, 0 rows affected (0.54 sec)

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

クエリは次のとおりです

mysql> insert into FindInSetDemo values(10,'John',23);
Query OK, 1 row affected (0.20 sec)
mysql> insert into FindInSetDemo values(1,'Carol',21);
Query OK, 1 row affected (0.17 sec)
mysql> insert into FindInSetDemo values(4,'Bob',25);
Query OK, 1 row affected (0.19 sec)
mysql> insert into FindInSetDemo values(6,'Sam',26);
Query OK, 1 row affected (0.15 sec)
mysql> insert into FindInSetDemo values(7,'Maxwell',29);
Query OK, 1 row affected (0.18 sec)
mysql> insert into FindInSetDemo values(8,'Mike',22);
Query OK, 1 row affected (0.13 sec)
mysql> insert into FindInSetDemo values(2,'David',27);
Query OK, 1 row affected (0.20 sec)
mysql> insert into FindInSetDemo values(3,'James',20);
Query OK, 1 row affected (0.20 sec)

selectステートメントを使用してテーブルのすべてのレコードを表示します。

クエリは次のとおりです

mysql> select *from FindInSetDemo;

以下は出力です

+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
|   10 | John    | 23   |
|    1 | Carol   | 21   |
|    4 | Bob     | 25   |
|    6 | Sam     | 26   |
|    7 | Maxwell | 29   |
|    8 | Mike    | 22   |
|    2 | David   | 27   |
|    3 | James   | 20   |
+------+---------+------+
8 rows in set (0.00 sec)

これは、id IN()

で正確な順序を指定するためのクエリです。
mysql> select *from FindInSetDemo
   - > where Id IN (1,4,6,7)
   - > order by FIND_IN_SET(Id, '1,4,6,7');

以下は出力です

+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
|    1 | Carol   |   21 |
|    4 | Bob     |   25 |
|    6 | Sam     |   26 |
|    7 | Maxwell |   29 |
+------+---------+------+
4 rows in set (0.00 sec)

  1. 「order」という名前のテーブルでのMySQLクエリエラー?

    注文は予約語です。予約語を引き続き使用するには、列名の前後にバッククォートを使用する必要があります。まずテーブルを作成しましょう- mysql> create table `order`    -> (    -> StudentId int    -> ); Query OK, 0 rows affected (1.78 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into `order` values(101); Query OK, 1

  2. 数値のユーザー定義変数を使用したMySQLORDERBY?

    まずテーブルを作成しましょう- mysql> create table DemoTable1898    (    Number int    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1898 values(10); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1898