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

최대 날짜가 있는 중복 값을 표시할 쿼리 선택

<시간/>

이를 위해 GROUP BY 및 HAVING을 사용합니다. 먼저 테이블을 생성하겠습니다 -

mysql> Create table DemoTable ( StudentName varchar(100), DueDate date );Query OK, 영향을 받는 행 0개(0.72초)

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

mysql> insert into DemoTable values('John','2019-01-11');Query OK, 영향을 받는 1개 행(0.26초) mysql> insert into DemoTable values('Chris','2019-02-11 ');쿼리 OK, 1행 영향(0.20초)mysql> DemoTable 값에 삽입('Chris','2019-03-11');쿼리 OK, 1행 영향(0.19초)mysql> DemoTable 값에 삽입( 'John','2019-04-11');쿼리 OK, 1행 영향(0.12초)mysql> DemoTable 값에 삽입('Bob','2019-05-11');Query OK, 1행 영향( 0.17초)mysql> DemoTable 값에 삽입('Bob','2019-06-11');쿼리 OK, 영향을 받는 1행(0.15초) mysql> DemoTable 값에 삽입('Robert','2019-07-11 ');쿼리 OK, 1행 영향(0.18초)mysql> DemoTable 값에 삽입('Robert','2019-08-11');쿼리 OK, 1행 영향(0.17초)mysql> DemoTable 값에 삽입( 'Robert','2019-09-11');쿼리 OK, 영향을 받는 행 1개(0.15초)

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

mysql> DemoTable에서 *선택;

출력

+-------------+------------+| 학생 이름 | 마감일 |+-------------+------------+| 존 | 2019-01-11 || 크리스 | 2019-02-11 || 크리스 | 2019-03-11 || 존 | 2019-04-11 || 밥 | 2019-05-11 || 밥 | 2019-06-11 || 로버트 | 2019-07-11 || 로버트 | 2019-08-11 || 로버트 | 2019-09-11 |+-------------+------------+9행 세트(0.00초)

다음은 최대 날짜의 중복 값을 표시하는 쿼리입니다 -

mysql> DemoTable tbl 그룹에서 tbl.StudentName,max(tbl.DueDate) 선택 tbl.StudentNamehave count(*)> 1;

출력

+-------------+------------------+| 학생 이름 | max(tbl.DueDate) |+------------+------+| 존 | 2019-04-11 || 크리스 | 2019-03-11 || 밥 | 2019-06-11 || 로버트 | 2019-09-11 |+-------------+------+4행 세트(0.00초)