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

MySQL-SELECT…WHEREidIN(..)特定の列の順序?


field()関数を使用してSELECT….WHEREid IN(..)を選択し、任意の列で並べ替えることができます。構文は次のとおりです-

SELECT *FROM yourTableName WHERE yourColumnName IN(‘value1’,’value2’,.......N)
ORDER BY FIELD(yourColumnName,value1’,’value2’,.......N);

上記の構文を理解するために、テーブルを作成しましょう-

mysql> create table SelectOrderbyField
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(30),
   -> Age int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.62 sec)

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

mysql> insert into SelectOrderbyField(Name,Age) values('John',23);
Query OK, 1 row affected (0.13 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('Carol',25);
Query OK, 1 row affected (0.16 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('Bob',21);
Query OK, 1 row affected (0.15 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('Mike',28);
Query OK, 1 row affected (0.17 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('Sam',26);
Query OK, 1 row affected (0.12 sec)

mysql> insert into SelectOrderbyField(Name,Age) values('David',23);
Query OK, 1 row affected (0.19 sec)

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

mysql> select *from SelectOrderbyField;

以下は出力です-

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  1 | John  |   23 |
|  2 | Carol |   25 |
|  3 | Bob   |   21 |
|  4 | Mike  |   28 |
|  5 | Sam   |   26 |
|  6 | David | 23   |
+----+-------+------+
6 rows in set (0.00 sec)

これは、... where id in(..)をfield()関数による順序付けを使用して選択するためのクエリです。

ID列で注文 クエリは次のとおりです-

mysql> select *from SelectOrderbyField where Id IN(5,1,3,2,6,4)
   -> order by field(Id,5,1,3,2,6,4);

以下は出力です-

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  5 | Sam   |   26 |
|  1 | John  |   23 |
|  3 | Bob   |   21 |
|  2 | Carol |   25 |
|  6 | David |   23 |
|  4 | Mike  | 28   |
+----+-------+------+
6 rows in set (0.00 sec)
名前付き注文列 名前の列に基づいて正しく注文できます。クエリは次のとおりです-

mysql> select *from SelectOrderbyField where Name IN('Sam','John','Bob','Carol','David','Mike')
   -> order by field(Name,'Sam','John','Bob','Carol','David','Mike');

以下は出力です-

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 5  | Sam   | 26   |
| 1  | John  | 23   |
| 3  | Bob   | 21   |
| 2  | Carol | 25   |
| 6  | David | 23   |
| 4  | Mike  | 28   |
+----+-------+------+
6 rows in set (0.03 sec)

  1. MySQLを使用してJavaでResultSetの列名を取得するにはどうすればよいですか?

    結果セットの列名を取得するには、getMetaData()メソッドを使用する必要があります。 getMetadata()のプロトタイプは次のとおりです- ResultSetMetaData getMetaData throws SQLException; 5つの列名を持つMySQLテーブルを作成します。テーブルを作成するためのクエリは次のとおりです- mysql> create table javagetallcolumnnames    -> (    -> Id int NOT NULL AUTO_INCREMENT,  

  2. MySQLで特定の列名を持つテーブルを見つける方法は?

    列名を見つけるには、information_schema.columnsを使用します。以下は構文です- select distinct table_name from information_schema.columns where column_name like '%yourSearchValue%' and table_schema=database(); さまざまなテーブルで列名を見つけるために、上記の構文を実装しましょう。ここでは、特定の列名が「クライアント」という単語を持つテーブル名のみが必要です- mysql> select distinct table_