top语句不能和desc一起用?

lanman 2005-04-20 11:33:03
select top 1 * from article order by r_date
select top 1 * from article order by r_date desc
第一条可以顺利执行,但第二条总是返回所有记录,TOP 1没有起作用,为什么.
环境: asp+access
...全文
226 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
QCB181 2005-08-26
  • 打赏
  • 举报
回复
你的 r_date
如果有重复的话,
在ACCESS选出来的话不只一个

sql 就不会出现以上问题
hqhhh 2005-08-26
  • 打赏
  • 举报
回复
一定可以,
sumnny 2005-08-25
  • 打赏
  • 举报
回复
我也遇到这个问题了,其实是access的限制.帮助里说的
返回出现在由 ORDER BY 子句指定的起始和结束范围内的一定数量的记录。假定希望得到 1994 年级中前 25 名学生的名字:
SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 1994
ORDER BY GradePointAverage DESC;

如果没有包含 ORDER BY 子句,查询将会从 Students 表中返回一个满足 WHERE 子句的包含 25 个记录的任意集合。

TOP 谓词不会在两个相等的值中进行选择。在上面的示例中,如果第 25 和第 26 名的年级平均分相同,那么查询将会返回 26 个记录。

也可以使用 PERCENT 保留字返回出现在 ORDER BY 子句指定的起始和结束范围内的某个百分比数量的记录。假如,您希望返回该年级中最后名次的百分之十个学生,而不是前 25 名学生:

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 1994
ORDER BY GradePointAverage ASC;

ASC 谓词指定返回最小值。TOP 之后的值必须是一个无符号整数。

TOP 谓词不影响查询是否可更新。
huangjietao 2005-06-22
  • 打赏
  • 举报
回复
在acess中把r_date字段改成备注型试试
lj5858 2005-06-22
  • 打赏
  • 举报
回复
这个问题我也遇到过,把r_date改成id排序就好了.,楼上两位说的很正确,我现在终于理解了.^_^
QQgenie 2005-06-22
  • 打赏
  • 举报
回复
就是patchclass(黑翼)说的原因.

问题不在TOP,TOP是取排序后的前几条.如果r_date的值有多个一样的,你的语句取就会出错,会多过TOP指定的数量.

要用r_date排序,应保证r_date值是唯一或极少重复
patchclass 2005-06-22
  • 打赏
  • 举报
回复
order by r_date desc

原因是 r_date的值可能都是一样的
hqhhh 2005-06-22
  • 打赏
  • 举报
回复
在sql server 下这种语句是绝对可以的,在access下没试过
itzhiren 2005-06-22
  • 打赏
  • 举报
回复
在sql server 下这种语句是绝对可以的,在access下也应该可以呀
wangnian11 2005-06-22
  • 打赏
  • 举报
回复
晕 怎么可能啊,我昨天还用那个组合的呢
tmyd 2005-06-22
  • 打赏
  • 举报
回复
检查一下你的 r_date 字段,看是不是 所有下面的时间都是一样的

采用top 的时候还要保证 排序字段的唯一,才能取出你想要的那几条记录
wwsh 2005-06-22
  • 打赏
  • 举报
回复
当然可以,问题是by r_date 是什么类型的
lstup 2005-04-21
  • 打赏
  • 举报
回复
5和1是一样的,都取出了所有的记录。

============
年轻人,都不知道说你什么好。top 语句就是取出记录的前xx条了,你用1和5还能取出所有记录,我……

算我见识少吧!
qfacy 2005-04-21
  • 打赏
  • 举报
回复
select top 1 * from article order by r_date desc
你这种写法先执行order by 然后在top这样就反了
你模仿下面这个就可以了
select * from [table] where id in (SELECT TOP 2 id
FROM [table])
ORDER BY id DESC
damuge2013 2005-04-21
  • 打赏
  • 举报
回复
select top xx * from article order by r_date desc
中的xx是1 或者 大于1 都可以执行,返回正确的结果。只是1的话就没什么意义。
tyhn168 2005-04-21
  • 打赏
  • 举报
回复
绝对可以的,你再试一试
lanman 2005-04-20
  • 打赏
  • 举报
回复
其实是5,我是测试用所以写成1,目的是取最新的几条记录.5和1是一样的,都取出了所有的记录。
lstup 2005-04-20
  • 打赏
  • 举报
回复
……
只取一条记录,还要排序?倒塌,至少也要2条嘛
xboyx 2005-04-20
  • 打赏
  • 举报
回复
把1改大一些,比如5试一试!

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧