sql获取10条相关文章,随机排序
栏目cid=2下文章的相关文章想这样获取10条以当前文章id为中心,向前取5条关键词相同的文章,向后取5条关键词相同的文章我的sql这样写的(注:{field:id}和{...
栏目cid=2下文章的相关文章想这样获取10条
以当前文章id为中心,向前取5条关键词相同的文章,向后取5条关键词相同的文章
我的sql这样写的(注:{field:id}和{field:keywords}都是cms自带标签,分别指 当前文章id 和 当前文章关键词)
向前取5条:
$Sql=Select top 5 * From [{pre}content] Where id>{field:id} And cid=2 And keywords like '{field:keywords}' Order by id asc
向后取5条:
$Sql=Select top 5 * From [{pre}content] Where id<{field:id} And cid=2 And keywords like '{field:keywords}' Order by id desc
但是,这样存在一个问题
文章id=100是栏目最新文章,文章id=1是栏目最老文章
那么id接近100或1的时候,上面的两条sql有一条是获取不到5条的,也就是只能获取到0-4条
问题:
一、当文章id是最新的几篇文章的时候
$Sql=Select top 5 * From [{pre}content] Where id>{field:id} And cid=2 And keywords like '{field:keywords}' Order by id asc
获取到0-4篇文章(不确定),自动去最老的文章里面查询关键词相同的文章,然后补齐相应的条数;
二、随机排序
$Sql=Select top 5 * From [{pre}content] Where id>{field:id} And cid=2 And keywords like '{field:keywords}' Order by id asc
或者
$Sql=Select top 5 * From [{pre}content] Where id<{field:id} And cid=2 And keywords like '{field:keywords}' Order by id desc
获取到的文章,如何再随机排序。
菜鸟一枚,数据库为Access,谢谢大家 展开
以当前文章id为中心,向前取5条关键词相同的文章,向后取5条关键词相同的文章
我的sql这样写的(注:{field:id}和{field:keywords}都是cms自带标签,分别指 当前文章id 和 当前文章关键词)
向前取5条:
$Sql=Select top 5 * From [{pre}content] Where id>{field:id} And cid=2 And keywords like '{field:keywords}' Order by id asc
向后取5条:
$Sql=Select top 5 * From [{pre}content] Where id<{field:id} And cid=2 And keywords like '{field:keywords}' Order by id desc
但是,这样存在一个问题
文章id=100是栏目最新文章,文章id=1是栏目最老文章
那么id接近100或1的时候,上面的两条sql有一条是获取不到5条的,也就是只能获取到0-4条
问题:
一、当文章id是最新的几篇文章的时候
$Sql=Select top 5 * From [{pre}content] Where id>{field:id} And cid=2 And keywords like '{field:keywords}' Order by id asc
获取到0-4篇文章(不确定),自动去最老的文章里面查询关键词相同的文章,然后补齐相应的条数;
二、随机排序
$Sql=Select top 5 * From [{pre}content] Where id>{field:id} And cid=2 And keywords like '{field:keywords}' Order by id asc
或者
$Sql=Select top 5 * From [{pre}content] Where id<{field:id} And cid=2 And keywords like '{field:keywords}' Order by id desc
获取到的文章,如何再随机排序。
菜鸟一枚,数据库为Access,谢谢大家 展开
3个回答
展开全部
通过你的描述来看,2种情况:
1,当符合条件的数据条数小于5的时候,此时肯定还是只表示应该有的数据条数
2,你想要的是符合条件的表示大于等于5条.当不够5条的时候,直接看是在最大位置.还是最小位置.直接按照最大或最小排序,取得符合条件5条表示就可以.
2的时候,注意用Count(*)的结果来判断.
1,当符合条件的数据条数小于5的时候,此时肯定还是只表示应该有的数据条数
2,你想要的是符合条件的表示大于等于5条.当不够5条的时候,直接看是在最大位置.还是最小位置.直接按照最大或最小排序,取得符合条件5条表示就可以.
2的时候,注意用Count(*)的结果来判断.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Access+ASP真心纠结。
两个解决方案:
一,写在程序里。这个貌似还简单些。
二,换sqlserver数据库,用存储过程实现你的这个分页功能。
两个解决方案:
一,写在程序里。这个貌似还简单些。
二,换sqlserver数据库,用存储过程实现你的这个分页功能。
追问
第一个问题确实绕了,先不管它了
那么
$Sql=Select top 5 * From [{pre}content] Where id>{field:id} And cid=2 And keywords like '{field:keywords}' Order by id asc
或者
$Sql=Select top 5 * From [{pre}content] Where id<{field:id} And cid=2 And keywords like '{field:keywords}' Order by id desc
获取到的文章
随机排序后进行输出
sql怎么写呢?
追答
帮你找了个存储过程:
create procedure splitpage @qry varchar(16384),@ipage int, @num int,@maxpages int = 5000 as
/*@qry SQL语句, @ipage 页数, @num 每页记录条数, @maxpages 最大查询页数 */
begin
declare @rcount int
declare @execsql varchar(16384)
if @ipage > @maxpages
begin
select '输入页数[' || convert(varchar,@ipage) || ']大于最大查询页数[' || convert (varchar,@maxpages) ||']'
return
end
select @rcount=@ipage*@num
set rowcount @rcount
set @execsql = stuff(@qry,charindex('select',@qry),6,'select sybid=identity(12),')
set @execsql = stuff(@execsql, charindex('from',@execsql),4,'into #temptable1 from')
set @execsql = @execsql || ' select * from #temptable1 where sybid>' || convert(varchar,(@ipage-1)*@num) || ' and sybid <= ' || convert(varchar,@ipage*@num)
execute (@execsql)
set rowcount 0
end
==========================
还有,sql的随机排序是函数:newid()
使用方法是
order by newid()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fid = fopen('aa.txt','r');
a1=fgets(fid);
a='东风';
fclose(fid);
if ismember(a,a1)
fid=fopen('bb.txt','w');
fprintf(fid,'east wind\r\n');
fclose(fid);
end
a1=fgets(fid);
a='东风';
fclose(fid);
if ismember(a,a1)
fid=fopen('bb.txt','w');
fprintf(fid,'east wind\r\n');
fclose(fid);
end
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询