MySQL:组值

tet*_*s11 4 mysql group-by

说我有一张Connections格式表[logID, user, time]

一个示例集是:

| logID |  user |  time 
|-----------------------
|  91   | terry | 12:55:00  <--- Last by user
|  90   | terry | 12:54:26
|  89   | nami  | 12:52:12  <--- Last by user
|  88   | terry | 12:50:50  <--- Last by user
|  87   | terry | 12:49:21
|  86   | terry | 12:48:16
|  85   | terry | 12:46:07
|  84   | nami  | 12:31:22  <--- Last by user
|  83   | nami  | 12:30:30
|  82   | nami  | 12:29:26 
|  81   | terry | 12:27:12  <--- Last by user
Run Code Online (Sandbox Code Playgroud)

所需的查询应该在用户列发生更改时对其进行分组,选择该用户的上一个时间戳:

| logID |  user |  time 
|-----------------------
|  91   | terry | 12:55:00  <--- Last by user
|  89   | nami  | 12:52:12  <--- Last by user
|  88   | terry | 12:50:50  <--- Last by user
|  84   | nami  | 12:31:22  <--- Last by user
|  81   | terry | 12:27:12  <--- Last by user
Run Code Online (Sandbox Code Playgroud)

我一直在玩GROUP BY,但还没到任何地方......

egg*_*yal 6

一种方法是使用用户变量:

SELECT   logID, @lastuser:=user AS user, time
FROM     mytable, (SELECT @lastuser:=NULL) init
HAVING   NOT @lastuser<=>user
ORDER BY time DESC
Run Code Online (Sandbox Code Playgroud)

sqlfiddle上看到它.