不确定如何在标题中正确解释这一点,我也可以显示数据。
我有一张表(SQLFIDDLE):
+----+----------+------------+
| id | session | updated |
+----+----------+------------+
| a | c9c9c9c9 | 2018-22-03 |
| a | c9c9c9c9 | 2018-21-03 |
| a | s9s9s9s9 | 2018-20-03 |
| a | s9s9s9s9 | 2018-19-03 |
| b | s8s8s8s8 | 2018-05-02 |
| b | s8s8s8s8 | 2018-04-02 |
| c | s7s7s7s7 | 2018-03-01 |
| c | s7s7s7s7 | 2018-02-01 |
| d | s2s2s2s2 | 2018-01-01 |
+----+----------+------------+
目前我正在使用此查询
SELECT id,
session,
Max(updated) AS updated_at
FROM reports
GROUP BY id,
session
ORDER BY updated_at DESC
LIMIT 4
这是 SQLFIDDLE: http://sqlfiddle.com/#!9/3c5272/1
哪位给了我这个,但我不想要第2行,因为它是重复的ID
+----+----------+------------+
| id | session | updated |
+----+----------+------------+
| a | c9c9c9c9 | 2018-22-03 |
| a | s9s9s9s9 | 2018-20-03 |
| b | s8s8s8s8 | 2018-05-02 |
| c | s7s7s7s7 | 2018-02-01 |
+----+----------+------------+
我想要这样的结果
+----+----------+------------+
| id | session | updated |
+----+----------+------------+
| a | c9c9c9c9 | 2018-22-03 |
| b | s8s8s8s8 | 2018-05-02 |
| c | s7s7s7s7 | 2018-02-01 |
| d | s2s2s2s2 | 2018-01-01 |
+----+----------+------------+
我试过
SELECT a.id,
(SELECT session
FROM reports AS b
WHERE b.id = a.id
LIMIT 1),
Max(a.updated) AS updated_at
FROM reports AS a
GROUP BY a.id
ORDER BY updated_at DESC
LIMIT 4
但我的MYSQL只是在100%的CPU负载下不断超时,我目前在该表中有大约328745+行。
答案 0 :(得分:0)
使用" DISTINCT"使用SELECT过滤重复值时。请访问此link以了解有关DISTINCT的更多信息。
答案 1 :(得分:0)
您需要确定如何选择session
列中的数据,因为id
子句中有session
和GROUP BY
,且有多个{ {1}}每sessions
。
如果这不是问题,请删除id
session
GROUP BY