如何选择 mysql 表中按列分组的倒数第二行?

wei*_*ard 5 mysql sql group-by

结构是:

CREATE TABLE current
(
   id BIGINT NOT NULL AUTO_INCREMENT,
   PRIMARY KEY(id),
   symbol VARCHAR(5),
   UNIQUE (id), INDEX (symbol)
) ENGINE MyISAM;
Run Code Online (Sandbox Code Playgroud)
ID 象征
1 A
2
3 C
4 C
5
6 A
7 C
8 C
9 A
10

我正在使用以下

SELECT * 
FROM current
WHERE id
IN 
(
    SELECT MAX(id)
    FROM current
    GROUP BY symbol
)
Run Code Online (Sandbox Code Playgroud)

返回表中的最后一条记录。

ID 象征
8 C
9 A
10

如何以类似的方式返回倒数第二个结果?

我知道我需要

ORDER BY id DESC LIMIT 1,1
Run Code Online (Sandbox Code Playgroud)

某处,但我的 foo 很弱。

我想回来

ID 象征
5
6 A
7 C

for*_*pas 2

对于8.0之前的MySql版本,在子句中使用子查询WHERE过滤出每个符号的最大值id,然后聚合:

SELECT MAX(id) id, symbol
FROM current
WHERE id NOT IN (SELECT MAX(id) FROM current GROUP BY symbol)
GROUP BY symbol
ORDER BY id;
Run Code Online (Sandbox Code Playgroud)

请参阅演示