select top 1 * from sdObjects where fmodule<= @fid --order by fmodule desc,fid desc and ( (convert(varchar(20),fid)+convert(varchar(20),fcolid)) < (convert(varchar(20),@fid)+convert(varchar(20),@fcolid)) ) order by fmodule desc ,fid desc --------
to 回复人: qybao(阿宝) ( ) 信誉:100 如何得到这个记录的max? //--------------------------------------- 服务器: 消息 174,级别 15,状态 1,行 1 max 函数要求有 1 个参数。
next frist;
last
而是可能不止2个字段的关键字,用SQL语句 如何实现?
fid, fcolid
--------------------------------
记录0: 3, 1
记录1: 2, 2
记录2: 2, 1
记录2: 1, 2
记录4: 1, 1
--------------------------------
现在已知记录是(fid,fcolid) 为 (2,1)
要查出上一条应为 (2,2),下一条应为(1,2)
//-----------------
这种做法不知是否很好?
可以将关键字的排序字段都转换成字符型迭加组成一个字符串来进行比较。
能够进行排序的应该都有转换成字符串吧?这样('1'+'2')<('2'+'1')了,就可以了:declare
@fid varchar(20), @fcolid int
set @fid= '2'
set @fcolid= 1
select top 1 * from sdObjects
where fmodule<= @fid
--order by fmodule desc,fid desc
and
(
(convert(varchar(20),fid)+convert(varchar(20),fcolid))
<
(convert(varchar(20),@fid)+convert(varchar(20),@fcolid))
)
order by fmodule desc ,fid desc
--------
如何得到这个记录的max?
//---------------------------------------
服务器: 消息 174,级别 15,状态 1,行 1
max 函数要求有 1 个参数。