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

MySQL의 가장 최근 행 20개에서 임의의 행 5개를 어떻게 선택합니까?


무작위의 경우 RAND() 메서드를 사용합니다. 행에 대한 제한은 LIMIT() 메서드를 사용하십시오.

먼저 테이블을 생성하겠습니다 -

mysql> Create table DemoTable -> ( -> ShippingDate datetime -> );쿼리 OK, 영향을 받는 행 0개(0.51초)

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

mysql> DemoTable 값에 삽입('2019-01-01');쿼리 OK, 1행 영향(0.11초)mysql> DemoTable 값에 삽입('2019-01-03'), 쿼리 OK, 1행 영향을 받은(0.14초)mysql> DemoTable 값에 삽입('2019-01-05');쿼리 OK, 영향을 받는 1행(0.13초)mysql> DemoTable 값에 삽입('2019-01-07');쿼리 OK, 1행 영향(0.11초)mysql> DemoTable 값에 삽입('2019-02-02');쿼리 OK, 1행 영향(0.15초)mysql> DemoTable 값에 삽입('2019-02-04');쿼리 OK, 1행 영향(0.14초)mysql> DemoTable 값에 삽입('2019-02-12');쿼리 OK, 1행 영향(0.07초)mysql> DemoTable 값에 삽입('2019-02-24');Query OK, 1행 영향(0.14초)mysql> DemoTable 값에 삽입('2019-02-25');Query OK, 1행 영향(0.11초)mysql> DemoTable 값에 삽입('2019-03-10 ');쿼리 OK, 1행 영향(0.16초)mysql> DemoTable 값에 삽입('2019-03-11');쿼리 OK, 1행 영향(0.11초)mysql> DemoTable 값에 삽입('2019-03 -12'); 쿼리 확인, 1행 영향(0.10초)mysql> DemoTable 값에 삽입('2019-03-14');쿼리 OK, 1행 영향(0.11초)mysql> DemoTable 값에 삽입('2019-03-16');쿼리 OK, 영향을 받는 행 1개(0.15초)mysql> DemoTable 값에 삽입('2019-03-18'), 쿼리 확인, 영향을 받는 행 1개(0.18초)mysql> DemoTable 값에 삽입('2019-03-20');Query OK, 1행 영향(0.14초)mysql> DemoTable 값에 삽입('2019-03-25');Query OK, 1행 영향(0.16초)mysql> DemoTable 값에 삽입('2019-03-28 ');쿼리 OK, 1행 영향(0.15초)mysql> DemoTable 값에 삽입('2019-03-29');쿼리 OK, 1행 영향(0.18초)mysql> DemoTable 값에 삽입('2019-04 -03');쿼리 OK, 1행 영향(0.20초)mysql> DemoTable 값에 삽입('2019-04-03');쿼리 OK, 1행 영향(0.13초)mysql> DemoTable 값에 삽입('2019 -04-04');쿼리 OK, 1행 영향(0.14초)mysql> DemoTable 값에 삽입('2019-04-06');쿼리 OK, 1행 영향(0.16초)mysql> DemoTable 값에 삽입( '201 9-04-09');쿼리 OK, 1행 영향(0.15초)mysql> DemoTable 값에 삽입('2019-05-01');쿼리 OK, 1행 영향(0.23초)mysql> DemoTable 값에 삽입 ('2019-05-13');쿼리 OK, 1행 영향(0.24초)mysql> DemoTable 값에 삽입('2019-05-15');쿼리 OK, 1행 영향(0.15초)mysql> 삽입 DemoTable values('2019-05-16');Query OK, 1개의 row가 영향을 받았습니다(0.16초)mysql> insert into DemoTable values('2019-05-18');Query OK, 1개의 row가 영향을 받았습니다(0.20초) 

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

mysql> DemoTable에서 *선택;

출력

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

+---------------------+| 배송일 |+---------------------+| 2019-01-01 00:00:00 || 2019-01-03 00:00:00 || 2019-01-05 00:00:00 || 2019-01-07 00:00:00 || 2019-02-02 00:00:00 || 2019-02-04 00:00:00 || 2019-02-12 00:00:00 || 2019-02-24 00:00:00 || 2019-02-25 00:00:00 || 2019-03-10 00:00:00 || 2019-03-11 00:00:00 || 2019-03-12 00:00:00 || 2019-03-14 00:00:00 || 2019-03-16 00:00:00 || 2019-03-18 00:00:00 || 2019-03-20 00:00:00 || 2019-03-25 00:00:00 || 2019-03-28 00:00:00 || 2019-03-29 00:00:00 || 2019-04-03 00:00:00 || 2019-04-03 00:00:00 || 2019-04-04 00:00:00 || 2019-04-06 00:00:00 || 2019-04-09 00:00:00 || 2019-05-01 00:00:00 || 2019-05-13 00:00:00 || 2019-05-15 00:00:00 || 2019-05-16 00:00:00 || 2019-05-18 00:00:00 |+---------------------+29행 세트(0.00초)

다음은 가장 최근 행 20개에서 임의의 행 5개를 선택하는 쿼리입니다. -

mysql> select tbl1.* from (select *from DemoTable ORDER BY ShippingDate DESC LIMIT 20 ) as tbl1 -> ORDER BY RAND() LIMIT 5;

출력

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

+---------------------+| 배송일 |+---------------------+| 2019-03-14 00:00:00 || 2019-05-13 00:00:00 || 2019-03-25 00:00:00 || 2019-05-16 00:00:00 || 2019-03-10 00:00:00 |+---------------------+5행 세트(0.04초)