‘壹’ php+mysql 置顶帖子分页后每个页面仍能置顶怎么实现呢
唉,把要置顶的,分开两个层来写,把置顶的内容设置为页的固定内容,先从数据库里查询出置顶的内容,把它放在页的顶端.然后分页的依然分下去,没关系.是不是很简单,呵呵
‘贰’ 如何使用sql语句进行分页操作
利用SQL语句分页要看你用的什么数据库。
Oracle数据库可以使用ROWNUM或row_number(),例如:Select
*
from
(select
ROWNUM
rn,
t.*
from
table
t)
where
rn
between
11
and
20;
Select
*
from
(select
row_number()
over
(ORDER
BY
col1)
rn,
t.*
from
table
t)
where
rn
between
11
and
20;
SQLServer数据库可以用Top或者row_number()函数,道理同上。
利用SQL分页有局限性,就是针对不同的数据库有不同的写法,所以通常会在应用程序里面做分页通用性比较强。但是对于数据量非常庞大的应用来说,还是用SQL分页比较适合。
‘叁’ 请问有没有办法用一条sql语句来实现置顶功能
在文章表里有top布尔型字段 我原来的sql语句是sql="select * from 表名 order by 时间 desc where top=true" 来显示置顶文章,然后再用sql="select * from 表名 order by 时间 desc where top=false" 来显示不是置顶的文章,可是这样做的话,虽然可以实现置顶的功能,但是这样那些置顶的文章在每一页都会出现,并且也不便于分页的制作,使每一页都一样条数的新闻没法控制,因为置顶的新闻可能没有也可以是多条。。
你的意思是order by后面加2个条件吧.
order by top asc, 时间 desc
其实不如分成两个。这样性能更好
‘肆’ SQL如何实现数据分页,要具体语句,谢谢
可以的,用存储过程
分页存储过程如下
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@RetColumns varchar(1000) = '*', -- 需要返回的列,默认为全部
@Orderfld varchar(255), -- 排序字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@IsCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType varchar(50) = 'asc', -- 设置排序类型, 非 asc 值则降序
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(1000) -- 主语句
declare @strTmp varchar(300) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @IsCount != 0 --执行总数统计
begin
if @strWhere != ''
set @strSQL = "select count(*) as Total from [" + @tblName + "] where " + @strWhere
else
set @strSQL = "select count(*) as Total from [" + @tblName + "]"
end
else --执行查询操作
begin
if @OrderType != 'asc'
begin
set @strTmp = "<(select min"
set @strOrder = " order by [" + @Orderfld +"] desc"
end
else
begin
set @strTmp = ">(select max"
set @strOrder = " order by [" + @Orderfld +"] asc"
end
set @strSQL = "select top " + str(@PageSize) + " " + @RetColumns + " from ["
+ @tblName + "] where [" + @Orderfld + "]" + @strTmp + "(["
+ @Orderfld + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
+ @Orderfld + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"
+ @strOrder
if @strWhere != ''
set @strSQL = "select top " + str(@PageSize) + " " + @RetColumns + " from ["
+ @tblName + "] where [" + @Orderfld + "]" + @strTmp + "(["
+ @Orderfld + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
+ @Orderfld + "] from [" + @tblName + "] where (" + @strWhere + ") "
+ @strOrder + ") as tblTmp) and (" + @strWhere + ") " + @strOrder
if @PageIndex = 1
begin
set @strTmp = ""
if @strWhere != ''
set @strTmp = " where (" + @strWhere + ")"
set @strSQL = "select top " + str(@PageSize) + " " + @RetColumns + " from ["
+ @tblName + "]" + @strTmp + " " + @strOrder
end
end
exec (@strSQL)
‘伍’ sql语句分页详解
这就是一个简单的查询语句,一个语句分为select 与 from 之间的部分,from 与 where之间的部分 和where 后边条件部分。
from 后跟的是表,
你说的a,b就是表名。只不过 是把(select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc)查询的结果作为表a了。
‘陆’ sql过期置顶排序
select * from table where date<getdate() order by is_pro asc,date desc union all select * from table where date>getdate() order by is_pro desc,date asc
desc asc 你自己调试下,我看晕了。应该这样写 没有问题。
‘柒’ c# sql 分页使用top怎么排序
select top 4 * --分页大小(每页有多少条数据)
from
(
select row_number() over (order by ID asc) as RowNumber,* from 表名
)as temp
where RowNumber > 4*(2-1)
‘捌’ 请教sql 置顶排序语句
使用Where关键字
1
Select id From table1 Where topFlag=1 order by topFlag desc, updateDate desc
‘玖’ sql语句分页和排序问题
create proc sp_page -- 数据库名,表名,字段名,第几页,每页行数
(@dataname varchar(20),@tablename varchar(20) ,@fieldname varchar(20),@page_cur int,@page_size int)
as
declare @sqlstr varchar(200)
set @sqlstr='select top '+cast( @page_size as varchar(20))+' * from '
+@dataname+'..'+@tablename+' where '+@fieldname+' not in ( select top '
+cast((@page_cur-1)*@page_size as varchar(20))+' '+@fieldname+' from '
+@dataname+'..'+@tablename+' order by '+@tablename+'.'@fieldname')'
execute(@sqlstr)
go
--exec sp_page pubs,jobs,job_id,3,2
‘拾’ sql数据库分页
楼主,刚刚有个问友和你问的差不多,我刚回答了他的。就直接把刚回答的复制给你看看啦。希望对你有帮助、。
要想分页,首先得做好准备工作。你要先声明每页显示多少条数据,还得获取当前选择的是多少页的页码。有了这两个分页就好办了。
sql如下:select top 10 from tableName
where (id not in(select top 20 from tableName order by Id desc)) order by Id desc
分页需要使用到的一些动态数据如下:
每页显示的数量:自己定义。
总页数:数据总条数/每页显示的条数
当前页码的计算方法:(页码-1)*每页显示的数量。比如我要浏览第3页的数据,3从客户端传送过来后,在后台对页码进行处理:(3-1)*每页显示的数量(假如是10).算出来后的结果就是20.你在把20以参数注入的方式动态添加到上面那个20那里就ok了。
sql中的10表示你每页显示的数据,这里跟10,就代表每页显示10条。(你可以定义一个常量作为每页显示的条数)
where中的20表示不包括前面的20条数据,也就是查询出从第21条到30之间的数据。
不知道我这样说你是否理解,其实只要理解了sql语句,分页就很好做了。