我的table
列有INT AUTO_INCREMENT id, VARCHAR cell
我想选择N行,其中N是所有行数(A)和一些最后一行(L)之间的差异 - 我的意思是N = A - L
,其中L是Constant
换句话说,我想对最后L行进行否定选择。
例如:
id cell
1 cell1
2 cell2
5 cell3
10 cell4
20 cell5
如果是L = 2
,那么N = 5 - 2 = 3
,所以我想在这种情况下选择三个第一行(1,2,5)。
如何在mySql中执行此操作?
答案 0 :(得分:2)
示例数据:
CREATE TABLE t
(`id` int, `cell` varchar(5))
;
INSERT INTO t
(`id`, `cell`)
VALUES
(1, 'cell1'),
(2, 'cell2'),
(5, 'cell3'),
(10, 'cell4'),
(20, 'cell5')
;
查询:
select
t.*
from
t
left join
(select id from t order by id desc limit 2) st
on t.id = st.id
where st.id is null;
结果:
| ID | CELL |
|----|-------|
| 1 | cell1 |
| 2 | cell2 |
| 5 | cell3 |
答案 1 :(得分:0)
SELECT * FROM table WHERE id NOT IN (SELECT * FROM table ORDER BY id DESC LIMIT 2)
让我知道它是否有效