ie.*_*ie. 3 select advantage-database-server sql-order-by
我正在使用 ADS v10 测试版。我正在尝试计算有序结果集。
1) ORDER BY 在嵌套查询中。我需要使用嵌套的 SELECT 进行一些计算:
SELECT Name, Value, ROWNUM() FROM (SELECT * FROM MainTable WHERE Value > 0 ORDER BY Value) a
Run Code Online (Sandbox Code Playgroud)
我得到
未找到预期的词法元素:) 解析表格时出现问题 在您的 FROM 关键字之后的名称 SELECT 语句。
删除 ORDER BY 后,一切正常。虽然,我在帮助中找到了示例,但它看起来像我的查询(确实更复杂):
SELECT * FROM (SELECT TOP 10 empid, fullname FROM branch1 ORDER BY empid) a UNION SELECT empid, fullname FROM branch2 ORDER BY empid
Run Code Online (Sandbox Code Playgroud)
2) ORDER BY
+ ROWNUM()
。我在上面的例子中使用了嵌套查询来计算有序的行。有没有机会避免嵌套查询?在 SQL Server 中,我可以执行以下操作:
SELECT Name, Value, ROW_NUMBER() OVER(ORDER BY Value) FROM MainTable WHERE Value > 1 ORDER BY Value
Run Code Online (Sandbox Code Playgroud)
请指教。谢谢。
我认为您需要将 ORDER BY 移到子查询之外:
SELECT Name, Value, ROWNUM() FROM
(SELECT * FROM MainTable WHERE Value > 0 ) a ORDER BY Value
Run Code Online (Sandbox Code Playgroud)
如果您希望将 rownum() 应用于有序结果集(今天早上我有点慢),那么可能需要使用以下内容:
SELECT Name, Value, ROWNUM() FROM
(SELECT top 100 PERCENT * FROM MainTable WHERE Value > 0 order by value ) a
Run Code Online (Sandbox Code Playgroud)
我不认为子查询中的 ORDER BY 是允许的,除非它实际上改变了结果......但是在这种情况下,它似乎应该被允许。
归档时间: |
|
查看次数: |
1225 次 |
最近记录: |