我想从sql语句创建记录的分页,我能够获得所有的下一个和上一个,但最后一个记录显示上一个记录为下一个由于sql查询只返回1行而不是2.我将下一个基于第一个结果和前一个作为第二个结果。如何通过sql来选择第一个,最后一个以及上一个和下一个通过
数据:
- 苹果
- 香蕉
- 葡萄
- 橙色
的SQL:
select *
from (select top 1 fruit
FROM table
where fruit > 'Banana'
order by fruit asc) as x
UNION ALL
select *
from (select top 1 fruit
FROM table
where fruit < 'Banana' order by fruit desc) as y
将R特效:
fruit
--------
Grape
Apple
这很好用!
对于第一个记录 - 我得到正确的结果是第一个记录是真正的下一个。 对于最后一条记录 - 我得到一个结果,它是获取上一条记录的第二条查询。但是我无法知道它的最后一条记录,所以它输出为Next而不是Previous。
我将如何确定这是最后一条记录,并且返回的单个行实际上是以前的记录?
或
如何让查询返回NULL行作为Next查询?所以我可以测试一个NULL结果?
奖励分!
我怎样才能有一个查询,会给我第一个记录,最后一个记录和下一个和上一个,所以我可以启用循环分页?如果在第一条记录上显示前一条记录。如果最后一条记录显示下一条记录为第一条记录?
如果你w蚂蚁有“第一”,“最后”,“下一个”等,你需要一些列来**按**排序,例如一个*序列号*或其他东西 - 然后你需要在你的select语句中指定'ORDER BY'子句。没有'ORDER BY' - >没有任何类型的排序,并且您无法定义* next *或* previous *而无需排序。 –
下一个应该*(因为你有)*是'在哪里水果>'香蕉'ORDER BY水果ASC'。但是你的先前的定义应该是'WHERE fruit <'banana'ORDER BY果实DESC'。 *(用'>'改成'<'。或者,这是一个错误的问题?)*另外,要获得NULL,尝试使用MAX(水果)和MIN(水果),而不是使用'TOP 1'和'ORDER BY'。 – MatBailie
我修正了错字@Dems我会尝试MAX/MIN。 –