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초)