在SQL Server 6.5中选择TOP 1

5

我希望你不要问我为什么要使用 SQL Server 6.5。

SQL Server 6.5 中没有 SELECT TOP 命令,而我需要它 :)

我需要执行类似于

Select top 1 * from persons
where name ='Mike'
order by id desc

我尝试过使用"SET ROWCOUNT 1"来解决问题,但是在这种情况下你无法使用"order by"。最终结果如下:
Select top 1 * from persons
where id = (select max(id) from persons where name ='Mike' )

一定有更好的方法!

有什么建议吗?

谢谢!


1
我理解你的痛苦,但我认为你被奇怪古怪的语法所困住了。 - HLGEM
2
刚刚还在抱怨被困在 MS SQL 2000 中,现在看来我应该闭嘴了 :) - LittleBobbyTables - Au Revoir
2个回答

2

尝试选择到一个临时表中,按ID排序,然后 SET ROWCOUNT 1 并从临时表中选择 *。(这适用于任何使用 SET ROWCOUNT N 的 top N 查询,而您现有的解决方案仅适用于 top 1。)


我只需要前1个,所以这样就可以了。但是什么更昂贵,嵌套查询还是临时表? - 100r
@100r,我认为这个问题的正确答案是“取决于情况”。唯一确定的方法是尝试运行两者并比较它们。 - user359040

0

在你的select语句之前设置ROWCOUNT 1,我没有mssql 6.5,所以没有测试过(我猜我很幸运)


尝试过了,但是在设置行数时无法使用order by :/ - 100r
1
我想知道你是否可以进行行计数,并在其中使用带有排序的选择。 - Spooks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接