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 |
对于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)
请参阅演示。
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |