【发布时间】:2020-05-07 22:09:22
【问题描述】:
我知道它非常规,但我需要按行号选择数据(因为这是错误报告给我们反馈的方式)
这是我想出的 SQL,但它不起作用。我确实从一个 MYSQL 查询开始,它确实有效,并通过转换器传递了它,因为我对 Oracle 的语法了解不多。
SELECT *
FROM (
SELECT ACCOUNTID, ACCOUNT_SSN, AGENTCODEID, @curRow := FROM dual @curRow + 1 AS row_number
FROM
agent_code_details_stage_0808
JOIN (
SELECT <<@curRow>> = 0
) r
) sub
WHERE sub.row_number = 78 or
sub.row_number = 277
更新:当我们打开表格时,没有指定“顺序”,但系统显示行号。我相信我们正在使用 SQL Developer。我会再次检查是否有默认列作为排序依据。
有没有不需要订单的方法来写这个?大多数数据库本质上是顺序的,因为新数据被写入其中。因此,我需要在创建时逐行提取(表中没有数据可供我比较或排序)将其视为日志文件,不仅仅是一个数据库。我收到一封电子邮件,告诉我数据中有一行失败,我需要能够找到准确的行,因为它落在数据库中以找出失败的原因。
【问题讨论】:
-
为什么不用窗口函数
row_number()然后逐行选择呢? -
你知道,“@”在oracle中是无效的