| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1701 人关注过本帖
标题:[求助]有关查询数据库指定行的问题
只看楼主 加入收藏
lzd
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-1-1
收藏
 问题点数:0 回复次数:18 
[求助]有关查询数据库指定行的问题
请问一下 怎么查询数据库里:(第一条记录 最后一条记录 倒数X条记录 中间X条记录)

如果表名是lzd 字段是(a,b,c) 请列举出代码来
搜索更多相关主题的帖子: 数据库 查询 字段 lzd 
2007-01-04 00:52
lzd
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-1-1
收藏
得分:0 
有种方法我是自己知道的 就是要建个 游标 这样显得有点麻烦
有没有直接点的呢???

2007-01-04 00:55
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 

如果表有主键的话,就用top.没有的话用临时表,加个自增字段.


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-04 14:21
lzd
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-1-1
收藏
得分:0 

请写出相应代码行吗
我知道 如果用 top 的话

1.第一条记录可以:select top 1*from lzd

2.中间第X到第Y条的话可以:
select * from lzd
where a not in(select top x-1 a from abc)
and a in(select top y a from abc)
3.
最后一条的话我用了游标:

declare a cursor scroll
for
select * from lzd
open a
fetch last from a
select * from lzd

上面的方法是不是最好的呢 如果还有更简短的代码那就更好了(请列举出来)

还有倒数X条记录的应该怎么写呢 上面说的临时表我不懂啊 能具体说明下吗


2007-01-04 16:44
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 
create procedure pro_a(@b int) --@b代表倒数第@b条
as
declare @a int
declare @str varchar(2000)
set @a=(select count(*)-@b from student)
set @str= ' select top 1 * from student where id not in ( select top ' + cast(@a as char) +' id from student ) '
exec(@str)

26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-04 17:57
lzd
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-1-1
收藏
得分:0 

五楼的朋友 不好意 我没有表达清楚我想要的结果
不是想要查询数据表中的倒数X条记录 而是想要查询倒数的X条记录
我试把你代码中的'TOP 1'去掉 对有些表可以实行 但对有些不可以
比如在pubs数据库中的authors表 虽然是有X条记录 但不是倒数的
我想要的结果是 不管数据表规不规则 也就是说没有对它进行排序 就照着默认,也没有设主键
总之是数据表里面倒数X条记录(自己随便创个数据表 第一个字段是(varchar)类型的)
比如建个表abc(a varchar(12), b varchar(12), c varchar(12))
字段a一定要输入有数字也有字母b,c也是
就照着这样的表 不用建其它的什么约束之类的
麻烦你再次指教
谢谢你对我提出问题的支持


2007-01-05 01:46
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 

查倒数X条记录有什么意义?


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2007-01-05 09:18
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 
以下是引用lzd在2007-1-5 1:46:33的发言:

五楼的朋友 不好意 我没有表达清楚我想要的结果
不是想要查询数据表中的倒数X条记录 而是想要查询倒数的X条记录
我试把你代码中的'TOP 1'去掉 对有些表可以实行 但对有些不可以
比如在pubs数据库中的authors表 虽然是有X条记录 但不是倒数的
我想要的结果是 不管数据表规不规则 也就是说没有对它进行排序 就照着默认,也没有设主键
总之是数据表里面倒数X条记录(自己随便创个数据表 第一个字段是(varchar)类型的)
比如建个表abc(a varchar(12), b varchar(12), c varchar(12))
字段a一定要输入有数字也有字母b,c也是
就照着这样的表 不用建其它的什么约束之类的
麻烦你再次指教
谢谢你对我提出问题的支持

你的表如果没有主键的话,那个代码是不起作用的


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-05 12:32
lzd
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-1-1
收藏
得分:0 
我也不知道到底有没有意义
如果SQL中能这样实现的话 那它肯定有意义 只是我还没有遇到而已
如果SQL中要实现这样的结果 非常麻烦 那就是意义中的不必要
如果SQL中不能实现的话 那就没意义喽

我会想到这个 也是因为有次的面试中有个问题是叫我查询表的
第一条和最后一条 因为之前极少学习SQL(一般都是接触企业管理器的) 所以当时连这个都做不出来
上了网一查才知道 SQL并不太可怕 现在很有兴趣学习
所以为了减少这样的问题 便举一反三地问下去



2007-01-05 15:16
lzd
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-1-1
收藏
得分:0 

设了主键
问题解决
谢谢各位 支持

还有 如果删除呢?


2007-01-05 15:19
快速回复:[求助]有关查询数据库指定行的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024907 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved