2016-07-14 15 views
0

我有一張表來記錄人們何時登錄系統。每次用戶成功登錄時,都會使用用戶名和登錄時間創建新行。
因此,用戶可能會多次出現,例如在下表中,Sam和Steve出現兩次,因爲他們在不同的日子登錄過。僅從表中選擇最近創建的行,其中包含重複項

+-----------+------------------+ 
| user_name | login_time | 
+-----------+------------------+ 
| Sam  | 2016-07-14 12:00 | 
| Steve  | 2016-07-13 09:30 | 
| Sam  | 2016-07-13 11:00 | 
| Simon  | 2016-07-14 09:00 | 
| Albert | 2016-07-14 10:30 | 
| Steve  | 2016-07-11 09:00 | 
+-----------+------------------+ 

我要查詢該表得到的只是最後一次用戶登錄的列表。
正如你可以在重複山姆和史蒂夫下面的例子中看到被拆除,只有最新(距離今天最近)登錄時間保持不變。

+-----------+------------------+ 
| user_name | login_time | 
+-----------+------------------+ 
| Sam  | 2016-07-14 12:00 | 
| Steve  | 2016-07-13 09:30 | 
| Simon  | 2016-07-14 09:00 | 
| Albert | 2016-07-14 10:30 | 
+-----------+------------------+ 

我不知道如何做到這一點,我無法找到一個內置函數。
我想我應該使用MAX()來選擇最近的日期,但不知道在哪裏把這個。
我想我可以在SELECT中使用SELECT來做到這一點,但沒有成功。

如何僅選擇每個用戶的最後登錄時間?

回答

3

在user_name上進行聚合並獲取登錄時間的max值。

select user_name,max(login_time) as last_login 
from users 
group by user_name 
+0

我知道每個人都必須這樣說,但該死的我肯定這是我嘗試的第一件事之一!我一定是在某處弄錯了我的語法。謝謝! – Equalsk

相關問題