就是普通的select top n *,我想取前几条能用变量自己设定,但是select top @Total * 貌似不能用,不知道该改成什么样的,求指导。谢谢!CREATE PROCEDURE Getlist
@Classid int,
@Total intAS
if(@Total>=6)
select top 6 * from tb_article where Classid = @Classid
else
begin
select top @Total * from tb_article where Classid = @Classid
union all
select top (6 - @Total) * from tb_article where Classid = @Classid
end
@Classid int,
@Total intAS
if(@Total>=6)
select top 6 * from tb_article where Classid = @Classid
else
begin
select top @Total * from tb_article where Classid = @Classid
union all
select top (6 - @Total) * from tb_article where Classid = @Classid
end
解决方案 »
- 如何用游标来实现以下需求
- 请问高手们这行哪里错了啊????
- 简单的触发器的问题,高手来解答一下。
- 数据库传输出现的错误。
- SQL,DBCC结果 消息 8905
- SQLServer中发生错误2-(系统找不到指定的文件), 此时正在MSSQLServer服务上执行该服务操作。
- 调用存储过程,参数能不能用函数
- 课程表的SQL语句(再问)
- 谁有FOXPRO7中文版!
- sqlserver2000,怎样定义常量使每个stored procedure都能引用这些常量。
- sql server2005: 如何通过语句 将某表里数据显示成另外表的字段...
- 查看触发器时,发现前面是一个红色的叉,不是一个绿色的加号,这是怎么回事
@Classid int,
@Total intAS
if(@Total>=6)
select top 6 * from tb_article where Classid = @Classid
else
begin
select top (@Total) * from tb_article where Classid = @Classid
union all
select top (6 - @Total) * from tb_article where Classid = @Classid
end
@Classid int,
@Total intAS
if(@Total>=6)
select top 6 * from tb_article where Classid = @Classid
else
begin
declare @sql nvarchar(4000)
set @sql='select top '+ltrim(@Total)+' * from tb_article where Classid = '+ltrim(@Classid)+'
union all
select top '+ltrim(6 - @Total)+' * from tb_article where Classid = '+ltrim(@Classid))
exec(@sql)
endSQL2K
CREATE PROCEDURE Getlist
@Classid int,
@Total int
as
begin
declare @sql varchar(6000)
if(@Total>=6)
begin
select @sql='select top 6 * from tb_article where Classid='+cast(@Classid as varchar)
end
else
begin
select @sql='select top '+cast(@Total as varchar)+' * from tb_article where Classid='+cast(@Classid as varchar)
+' union all '
+' select top '+cast(6-@Total as varchar)+' * from tb_article where Classid ='+cast(@Classid as varchar)
end
exec(@sql)
end
CREATE PROCEDURE Getlist
@Classid int,
@Total int
as
begin
declare @sql varchar(6000)
if(@Total>=6)
begin
select @sql='select top 6 * from tb_article where Classid='+cast(@Classid as varchar)
end
else
begin
select @sql='select * from (select top '+cast(@Total as varchar)+' * from tb_article where Classid='+cast(@Classid as varchar)
+' union all '
+' select top '+cast(6-@Total as varchar)+' * from tb_article where Classid ='+cast(@Classid as varchar)+') t '
+' order by [排序的字段名] '
end
exec(@sql)
end
select top (@Total) * from tb_article where Classid = @Classid
union all
select top (6 - @Total) * from tb_article where Classid = @Classid