Sql top x排序依据
有人能帮我理解为什么它不起作用吗Sql top x排序依据,sql,sql-server,sql-order-by,Sql,Sql Server,Sql Order By,有人能帮我理解为什么它不起作用吗 select top(10) * from (select * from dbticket order by 1 desc ) a 错误是: The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specif
select top(10) * from
(select * from dbticket order by 1 desc ) a
错误是:
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.
我在第一栏有这个ID:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
我需要的身份证是这样的:
15
14
13
12
11..
简单地说,你可以使用
SELECT TOP 10 * FROM dbticket ORDER BY 1 DESC
子查询不是必需的 这不起作用,因为有一个基本的t-SQL逻辑。T-SQL是一种基于集合的理论,我们所说的集合是指无序的唯一对象集合。所以FROM关键字在集合上起作用,但当我们添加orderby子句时,我们得到的不再是集合,而是我们可以称之为游标或更具体的“当前行集合”。 所以,这就解释了你的问题。。一旦添加order by 1 desc,select*from dbticket返回的任何数据都将转换为与from子句不兼容的游标 希望这有帮助 要获得所需的结果,请编写为:
;with CTE as
(
select row_number() over (order by id desc) as rownum, --order by the first column ex: id
name, id --select * columns
from dbticket)
select Top 10 name , id from CTE --give names of all the columns you need
order by rownum asc;
检查示例代码试试这个
select * from
(select top(10) * from dbticket order by 1 desc ) a
当您在子查询中有order by时,必须在查询的select中使用Top选项。您可以在查询中使用Top 100%,使用order by选项从子查询中获取所有行 例如:
select top(10) * from
(select top 100 Percent * from dbticket order by 1 desc ) a
在示例中,您可以使用以下查询:
select * from
(select top 10 * from dbticket order by 1 desc ) a
或
在派生表外部使用该order by。根据错误消息,您的子查询使用order by,而不在子查询本身中指定TOP。1的规程问题是什么?请看“除非”部分。因此,您可以使用SELECT TOP10*FROM SELECT TOP 100%FROM dbticket ORDER BY 1 DESCa@TimSchmelter-你可以,但这只是使警告静音,并且可能实际上不执行任何排序-因此您可以说您可以删除ORDER BY子句-它将具有相同的保证效果。如果您可以解释为什么您不只是使用select top10*from dbticket ORDER BY 1 desc,我们可能能够帮助您解决更多不起作用的问题:Msg 8155,级别16,状态2,第2行“a”的第1列未指定列名。即使是这样:从select*中选择top10*从dbticket order by id\u ticket desc FOR XML AUTO ayeah基于我给出的查询答案,但我们需要给出列名称,这是sql server首先执行前10名,然后按顺序执行的方式clause@RodolfoRollo-请参阅语句的逻辑处理顺序。第10步是订购。顶部是第11步。在您的解决方案中,外部子查询有什么用处?我相信整个场景没有给出jst要求的部分受到质疑。这是针对所问问题提供的解决方案,可能是您可以在何处使用条件,也可能是什么。但无论是在内部还是外部使用前10名,都没有区别。它按照我的要求运行,非常感谢
select * from
(select top 10 * from dbticket order by 1 desc ) a
select top 10 * from dbticket order by 1 desc