如何解决在内联视图上排序
| 我想从需要在外部查询中按升序排序的表中获取前10个数据。下面是查询的伪代码。除了使用表值函数外,还有哪些选择?select * from
(select top 10 tour_date
from tourtable
order by tour_date desc)
order by tour_date asc
解决方法
您编写的查询应该可以工作,您只需要为子查询加上别名:
select *
from (select top 10 tour_date from tourtable order by tour_date desc) t
order by tour_date asc
假设SQL Server 2005+,是另一种选择:
SELECT t.tour_date
FROM (SELECT tour_date,ROW_NUMBER() OVER(ORDER BY tour_date DESC) AS RowNum
FROM tourtable) t
WHERE t.RowNum <= 10
ORDER BY t.tour_date ASC
也可以用CTE编写:
WITH cteRowNum AS (
SELECT tour_date,ROW_NUMBER() OVER(ORDER BY tour_date DESC) AS RowNum
FROM tourtable
)
SELECT tour_date
FROM cteRowNum
WHERE RowNum <= 10
ORDER BY tour_date ASC
,在非tsql上下文中测试:
select * from (select tour_date from tourable order by tour_date desc limit 10) a order by tour_date asc
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。