sql 中top中的变量为count()解决办法

用delphi操作mssqlserver2000数据库,想实现如下功能:从一个表中找出符合条件一的记录数,记作n,再这个表中选出符合条件二的前n条记录。(已知条件二包含条... 用delphi操作mssql server2000数据库,想实现如下功能:
从一个表中找出符合条件一的记录数,记作n,再这个表中选出符合条件二的前n条记录。(已知条件二包含条件一,即符合条件二的记录多)。
因select top n在server2000中不能用变量,请问用什么办法能在Delphi+server2000中实现此功能呢?
初步思路:(语法错误)select top (select count(*)from table1 where 条件一)* from table1 where 条件二
非常非常的谢谢,可是我的bh是varchar(30),是否将int直接换成varchar(30),最后的cast(@bh as varchar(20))还需要变化吗? 在查询分析器中查出的是空记录,是由空格的原因吗?
还有,还有在Delphi中,对应with storedproc1 do的语句该怎么写啊。在storedproc1中设置参数只有一个@bh吗。

感谢ing.......
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
华夏日长兴
推荐于2016-09-26 · TA获得超过9591个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3630万
展开全部
把需求做成存储过程,然后再Delphi里边调用就行了:

你的编号是varchar30,那么直接用下面的语句就型了,至于在Delphi里边怎么调用过程你得查查手册,这个我也记不清了,不好意思!

create procedure p_sel @bh varchar(30) --如果你的编号为字符型的字段的话,用这个过程
as
begin
declare @count int,@sql varchar(8000)
select @count=count(*) from wllxxn where 标志 = 0 and 编号=@bh
select @sql='select top '+cast(@count as varchar(30))+' * from wllxxn where 标志=1 and 编号='''+@bh+''''
exec (@sql)
end
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
频余泣曾琪
2020-03-10 · TA获得超过1241个赞
知道小有建树答主
回答量:1247
采纳率:92%
帮助的人:5.2万
展开全部
支持一下感觉挺不错的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式