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

시간당 사용자 로그인 시간의 형태로 데이터를 그룹화하고 최근 한 시간 동안 로그인한 사용자의 기록을 가져오는 MySQL 쿼리는 무엇입니까?

<시간/>

이를 위해 JOIN 조건과 함께 하위 쿼리를 사용할 수 있습니다. 구문은 다음과 같습니다 -

 SELECT yourTablevariableName.*FROM( SELECT MAX(UNIX_TIMESTAMP(yourDateTimeColumnName)) AS anyAliasName FROM getLatestHour GROUP BY HOUR(UserLoginDateTime)) yourOuterVariableNameJOIN yourTableName yourTablevariableNameON UNIX_TIMESTAMP(yourDateTimeColumnNameyourW'DateColumnVariable(yourDateTimeColumnNameyourW') =yourAlias 사전> 

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

mysql> 테이블 생성 getLatestHour -> ( -> UserId int, -> UserName varchar(20), -> UserLoginDateTime datetime -> );쿼리 OK, 영향을 받는 행 0개(0.68초)

이제 insert 명령을 사용하여 테이블에 일부 레코드를 삽입할 수 있습니다. 기록은 사용자 로그인 날짜와 시간을 포함하는 사용자 기록입니다. 쿼리는 다음과 같습니다 -

mysql> insert into getLatestHour values(100,'John','2019-02-04 10:55:51');Query OK, 영향을 받는 행 1개(0.27초)mysql> getLatestHour values(101,' Larry','2019-02-04 12:30:40'); 쿼리 확인, 영향을 받는 행 1개(0.16초) mysql> getLatestHour 값(102,'Carol','2019-02-04 12:40:46');쿼리 OK, 1행 영향(0.20초)mysql> insert into getLatestHour values(103,'David','2019-02-04 12:44:54');쿼리 OK, 1행 영향(0.17초) )mysql> insert into getLatestHour values(104,'Bob','2019-02-04 12:47:59');쿼리 OK, 영향을 받는 행 1개(0.15초)

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

mysql> select *from getLatestHour;

다음은 출력입니다 -

+--------+----------+---------------------+| 사용자 ID | 사용자 이름 | UserLoginDateTime |+--------+----------+--------------------+| 100 | 존 | 2019-02-04 10:55:51 || 101 | 래리 | 2019-02-04 12:30:40 || 102 | 캐롤 | 2019-02-04 12:40:46 || 103 | 데이비드 | 2019-02-04 12:44:54 || 104 | 밥 | 2019-02-04 12:47:59 |+--------+---------+------ ---+5 행 세트(0.00초)

다음은 시간당 데이터를 그룹화하고 최근 시간의 레코드를 가져오는 쿼리입니다. 쿼리는 다음과 같습니다 -

mysql> SELECT tbl1.* -> FROM ( -> SELECT MAX(UNIX_TIMESTAMP(UserLoginDateTime)) AS m1 -> FROM getLatestHour -> GROUP BY HOUR(UserLoginDateTime) -> ) var1 -> JOIN getLatestHour tbl1STAMP -> ON UNIX_TIME (UserLoginDateTime) =var1.m1 -> WHERE DATE(UserLoginDateTime) ='2019-02-04';

다음은 출력입니다 -

+--------+----------+---------------------+| 사용자 ID | 사용자 이름 | UserLoginDateTime |+--------+----------+--------------------+| 100 | 존 | 2019-02-04 10:55:51 || 104 | 밥 | 2019-02-04 12:47:59 |+--------+---------+------ ---+2 행 세트(0.05초)