表名 表_一列 : (id, ref_id, 时间戳)
| **id** | **ref_id** | **timestamp** |
| 1 | 111 | 2020-04-27 02:59:45 |
| 2 | 111 | 2020-04-28 02:59:45 |
| 3 | 111 | 2020-04-26 02:59:45 |
我想实现像
DELETE
FROM (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY red_id ORDER BY TIMESTAMP DESC) AS rn
FROM table_one
).
s
WHERE r.rn != 1;
执行上述删除查询后的表table_one应该是这样的。
| **id** | **ref_id** | **timestamp**
| 2 | 111 | 2020-04-28 02:59:45 |
我试图选择需要删除的行,但没有得到正确的行号。请看下面我的查询。
SET @row_number : = 0;
SELECT *
FROM (
SELECT @row_number: = CASE
WHEN @ci = ref_id THEN @row_number + 1
ELSE 1
END AS rn,
@ci: = ref_id ref_id,
id,
TIMESTAMP
FROM table_one
ORDER BY
TIMESTAMP DESC
先谢谢你