成功了,但是想知道怎么简化
select top 3 * from(
结果集R
) r
where id not in (
select top 3 id from(
结果集R
)r2
两个结果集R是相同的,这样是为了分页,取第二页,每页3个。
只是我想知道,**第二个结果集能不能简化**,我现在是select……写全的。
select * from (结果集R)r limit m*3,m*3+3 m是你的页码
SELECT TOP 3 *
FROM TableA
WHERE id < (SELECT MIN(id) FROM (SELECT TOP ((2-1)*3) id FROM Table ORDER BY id DESC) AS tabTmp)
ORDER BY id DESC
--TableA 你自己的表
方法1:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
)
ORDER BY id
方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id
方法3:
适用于 SQL Server 2005
SELECT TOP 页大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber > 页大小*(页数-1)
如果数据库是2012的可以用下面的方法试试:
SELECT * FROM tb
ORDER BY ID
OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY