以每小時使用者登入時間形式對資料進行分組的 MySQL 查詢,以及獲取近期一小時登入使用者的記錄?
為此,你可以將子查詢與 JOIN 條件結合使用。語法如下:
SELECT yourTablevariableName.* FROM ( SELECT MAX(UNIX_TIMESTAMP(yourDateTimeColumnName)) AS anyAliasName FROM getLatestHour GROUP BY HOUR(UserLoginDateTime) ) yourOuterVariableName JOIN yourTableName yourTablevariableName ON UNIX_TIMESTAMP(yourDateTimeColumnName) = yourOuterVariableName.yourAliasName WHERE DATE(yourDateTimeColumnName) = 'yourDateValue';
為了理解上述語法及其產生的結果,我們先建立一個表。建立表的查詢如下:
mysql> create table getLatestHour -> ( -> UserId int, -> UserName varchar(20), -> UserLoginDateTime datetime -> ); Query OK, 0 rows affected (0.68 sec)
你現在可以使用 insert 命令向表中插入一些記錄。這些記錄是使用者記錄,包括使用者登入日期和時間。查詢如下:
mysql> insert into getLatestHour values(100,'John','2019-02-04 10:55:51'); Query OK, 1 row affected (0.27 sec) mysql> insert into getLatestHour values(101,'Larry','2019-02-04 12:30:40'); Query OK, 1 row affected (0.16 sec) mysql> insert into getLatestHour values(102,'Carol','2019-02-04 12:40:46'); Query OK, 1 row affected (0.20 sec) mysql> insert into getLatestHour values(103,'David','2019-02-04 12:44:54'); Query OK, 1 row affected (0.17 sec) mysql> insert into getLatestHour values(104,'Bob','2019-02-04 12:47:59'); Query OK, 1 row affected (0.15 sec)
使用 select 語句顯示錶中的所有記錄。查詢如下:
mysql> select *from getLatestHour;
以下是輸出:
+--------+----------+---------------------+ | UserId | UserName | UserLoginDateTime | +--------+----------+---------------------+ | 100 | John | 2019-02-04 10:55:51 | | 101 | Larry | 2019-02-04 12:30:40 | | 102 | Carol | 2019-02-04 12:40:46 | | 103 | David | 2019-02-04 12:44:54 | | 104 | Bob | 2019-02-04 12:47:59 | +--------+----------+---------------------+ 5 rows in set (0.00 sec)
以下是如何按小時對資料進行分組並獲取最近一小時的記錄的查詢。查詢如下:
mysql> SELECT tbl1.* -> FROM ( -> SELECT MAX(UNIX_TIMESTAMP(UserLoginDateTime)) AS m1 -> FROM getLatestHour -> GROUP BY HOUR(UserLoginDateTime) -> ) var1 -> JOIN getLatestHour tbl1 -> ON UNIX_TIMESTAMP(UserLoginDateTime) = var1.m1 -> WHERE DATE(UserLoginDateTime) = '2019-02-04';
以下是輸出:
+--------+----------+---------------------+ | UserId | UserName | UserLoginDateTime | +--------+----------+---------------------+ | 100 | John | 2019-02-04 10:55:51 | | 104 | Bob | 2019-02-04 12:47:59 | +--------+----------+---------------------+ 2 rows in set (0.05 sec)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP