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

MySQL UNION 내에서 선택 순서를 유지하시겠습니까?

<시간/>

CASE 문을 사용하는 것이 좋습니다. UNION을 사용하지 마십시오. 먼저 테이블을 생성하겠습니다 -

mysql> Create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, ShippingDate datetime );쿼리 OK, 영향을 받는 행 0개(0.63초)

삽입 명령을 사용하여 테이블에 일부 레코드 삽입 -

mysql> insert into DemoTable(ShippingDate) values('2019-04-21');Query OK, 1행 영향(0.17초)mysql> insert into DemoTable(ShippingDate) values('2019-01-01');쿼리 OK, 1행 영향(0.13초)mysql> DemoTable(ShippingDate) 값에 삽입('2019-05-11');쿼리 OK, 1행 영향(0.16초)mysql> DemoTable(ShippingDate) 값에 삽입( '2018-12-31');쿼리 OK, 1행 영향(0.18초)mysql> DemoTable(ShippingDate) 값에 삽입('2019-02-18');쿼리 OK, 1행 영향(0.19초) 

select 문을 사용하여 테이블의 모든 레코드 표시 -

mysql> DemoTable에서 *선택;

이것은 다음과 같은 출력을 생성합니다 -

+----+---------------------+| 아이디 | 배송일 |+----+---------------------+| 1 | 2019-04-21 00:00:00 || 2 | 2019-01-01 00:00:00 || 3 | 2019-05-11 00:00:00 || 4 | 2018-12-31 00:00:00 || 5 | 2019-02-18 00:00:00 |+----+--------------------+5행 세트(0.00초)

다음은 order by case를 사용하여 선택 순서를 유지하는 쿼리입니다.

mysql> select *from DemoTable ORDER BY CASE WHEN ShippingDate  

이것은 다음과 같은 출력을 생성합니다 -

+----+---------------------+| 아이디 | 배송일 |+----+---------------------+| 3 | 2019-05-11 00:00:00 || 1 | 2019-04-21 00:00:00 || 5 | 2019-02-18 00:00:00 || 2 | 2019-01-01 00:00:00 || 4 | 2018-12-31 00:00:00 |+----+--------------------+5행 세트(0.00초)