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

MySQLの`IN(…)`ステートメントの値と同じ順序でクエリ結果を返すことはできますか?


はい、MySQLのORDER BY FIELD()を使用してこれを実現できます。まずテーブルを作成しましょう-

mysql> create table DemoTable
   -> (
   -> Number int
   -> );
Query OK, 0 rows affected (0.54 sec)

挿入コマンド-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable values(19);
Query OK, 1 row affected (0.20 sec)

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

mysql> insert into DemoTable values(34);
Query OK, 1 row affected (0.32 sec)

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

mysql> insert into DemoTable values(25);
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable values(29);
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable values(24);
Query OK, 1 row affected (0.14 sec)

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

mysql> select *from DemoTable;

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

+--------+
| Number |
+--------+
|     19 |
|     30 |
|     34 |
|     28 |
|     25 |
|     29 |
|     24 |
+--------+
7 rows in set (0.00 sec)

以下は、設定された値と同じ順序で結果を返すクエリです-

mysql> select *from DemoTable
   -> ORDER BY FIELD(Number, 30,19,34,25,28,29,24) ;

これにより、結果を同じ順序で表示する次の出力が生成されます-

+--------+
| Number |
+--------+
|     30 |
|     19 |
|     34 |
|     25 |
|     28 |
|     29 |
|     24 |
+--------+
7 rows in set (0.00 sec)

  1. 対応する列の値からNO値のみのカウントを返すMySQLクエリ

    まずテーブルを作成しましょう- mysql> create table DemoTable1829      (      Name varchar(20),      isTopper ENUM('YES','NO')      ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTabl

  2. MySQLでselectクエリによって取得された結果をどのように並べ替えることができますか?

    テーブルから特定のデータまたは行を選択するのが一般的です。行は、テーブルに表示される順序で返されます。テーブルから選択した行を、ある列に対して昇順または降順で返す必要がある場合があります。 「ORDERBY」ステートメントは、ある列に関して結果を並べ替えるために使用されます。次の例は、より明確になります。 「name」フィールドを含むさまざまなフィールドで構成されるテーブルがあるとします。テーブルからすべての行を選択しますが、行は名前のアルファベット順に並べる必要があります。ここで「ORDERBY」ステートメントが機能します。このシナリオでは、結果を「名前」フィールドの昇順で並べ替える必要