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

MySQL에서 LIKE로 주문하는 방법은 무엇입니까?

<시간/>

MySQL에서 like로 주문하려면 case 문을 사용하십시오. 구문은 다음과 같습니다 -

SELECT *FROM yourTableName
   ORDER BY CASE
   WHEN yourColumnName like '%yourPatternValue1%' then 1
   WHEN yourColumnName like '%yourPatternValue2%' then 2
else 3
end;

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> create table OrderByLikeDemo
   -> (
   -> Id int,
   -> Name varchar(100)
   -> );
Query OK, 0 rows affected (1.84 sec)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

mysql> insert into OrderByLikeDemo values(100,'John Smith');
Query OK, 1 row affected (0.18 sec)

mysql> insert into OrderByLikeDemo values(101,'Carol Taylor');
Query OK, 1 row affected (0.23 sec)

mysql> insert into OrderByLikeDemo values(102,'David Miller');
Query OK, 1 row affected (0.12 sec)

mysql> insert into OrderByLikeDemo values(103,'Mike Taylor');
Query OK, 1 row affected (0.18 sec)

mysql> insert into OrderByLikeDemo values(104,'Bob Miller');
Query OK, 1 row affected (0.11 sec)

mysql> insert into OrderByLikeDemo values(105,'Sam Williams');
Query OK, 1 row affected (0.16 sec)

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

mysql> select *from OrderByLikeDemo;

다음은 출력입니다 -

+------+--------------+
| Id   | Name         |
+------+--------------+
| 100  | John Smith   |
| 101  | Carol Taylor |
| 102  | David Miller |
| 103  | Mike Taylor  |
| 104  | Bob Miller   |
| 105  | Sam Williams |
+------+--------------+
6 rows in set (0.00 sec)

다음은 −

와 같이 ORDER BY를 사용하여 모든 레코드를 가져오는 쿼리입니다.
mysql> select *from OrderByLikeDemo
   -> order by case
   -> when Name like '%Taylor%' then 1
   -> when Name like '%Miller%' then 2
   -> else 3
   -> end;

다음은 출력입니다 -

+------+--------------+
| Id   | Name         |
+------+--------------+
| 101  | Carol Taylor |
| 103  | Mike Taylor  |
| 102  | David Miller |
| 104  | Bob Miller   |
| 100  | John Smith   |
| 105  | Sam Williams |
+------+--------------+
6 rows in set (0.00 sec)