Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL "IN" 쿼리에서 순서를 유지하시겠습니까?


필드 명령을 사용하여 MySQL IN 쿼리에서 순서를 유지할 수 있습니다. 구문은 다음과 같습니다 -

select *from yourTableName anyVariableName where anyVariableName.yourColumnName in(value1,value2,......N)
order by field(anyVariableName.yourColumnName,value1,value2,......N);

위의 구문을 구현하기 위해 테이블을 생성하겠습니다 -

mysql> create table OrderInDemo
   −> (
      −> Id int,
      −> Name varchar(100),
      −> Age int
   −> );
Query OK, 0 rows affected (1.24 sec)

이제 테이블에 일부 레코드를 삽입하겠습니다. 레코드를 삽입하는 쿼리는 다음과 같습니다 -

mysql> insert into OrderInDemo values(90,'David',23);
Query OK, 1 row affected (0.10 sec)

mysql> insert into OrderInDemo values(9,'Sam',24);
Query OK, 1 row affected (0.59 sec)

mysql> insert into OrderInDemo values(10,'Carol',19);
Query OK, 1 row affected (0.25 sec)

mysql> insert into OrderInDemo values(1,'John',26);
Query OK, 1 row affected (0.42 sec)

mysql> insert into OrderInDemo values(3,'Johnson',25);
Query OK, 1 row affected (0.18 sec)

mysql> insert into OrderInDemo values(2,'Ramit',20);
Query OK, 1 row affected (0.18 sec)

select 문을 사용하여 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from OrderInDemo;

다음은 출력입니다 -

+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
|   90 | David   |   23 |
|    9 | Sam     |   24 |
|   10 | Carol   |   19 |
|    1 | John    |   26 |
|    3 | Johnson |   25 |
|    2 | Ramit   |   20 |
+------+---------+------+
6 rows in set (0.00 sec)

처음에 논의한 구문을 구현하여 MySQL IN 쿼리에서 순서를 유지합니다. 쿼리는 다음과 같습니다 -

mysql> select *from OrderInDemo OD where OD.Id in(10,1,3)
   −> order by field(OD.Id,10,1,3);

다음은 쿼리에 제공된 순서대로 정렬된 결과를 표시하는 출력입니다 -

+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
|   10 | Carol   |   19 |
|    1 | John    |   26 |
|    3 | Johnson |   25 |
+------+---------+------+
3 rows in set (0.00 sec)