否定选择mysql中的最后一行

时间:2014-11-17 10:59:14

标签: mysql

我的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中执行此操作?

2 个答案:

答案 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)

让我知道它是否有效