Выбрать по строке в Oracle - PullRequest
0 голосов
/ 08 мая 2020

Я знаю, что это нетипично, но мне нужно выбирать данные по номеру строки (так как отчет об ошибке дает нам обратную связь)

Вот 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

Обновление: когда мы открываем table, "порядок" не указан, но система показывает номера строк. Я считаю, что мы используем SQL Developer. Я еще раз проверю, есть ли столбец по умолчанию, по которому выполняется сортировка.

Есть ли способ написать это, не требуя заказа? Большинство баз данных по своей сути являются последовательными, так как в них записываются новые данные .. Следовательно, мне нужно тянуть по строкам по мере их создания (в таблице нет данных для сравнения или сортировки). Думайте об этом как о файле журнала. , больше, чем база данных. Я получаю электронное письмо с сообщением о том, что в данных есть строка, в которой произошел сбой, и мне нужно иметь возможность добраться до этой конкретной строки, когда она попадает в базу данных, чтобы выяснить, что не удалось.

1 Ответ

2 голосов
/ 08 мая 2020

Oracle имеет row_number():

SELECT acd.*
FROM (SELECT acd.*,
             ROW_NUMBER() OVER (ORDER BY ?) as seqnum
      FROM agent_code_details_stage_0808 acd 
    ) acd
WHERE sub.row_number IN (78, 277);

Единственное предостережение: таблицы SQL представляют неупорядоченные наборы. В таблице SQL нет такой вещи, как строка 78. При заказе от что-то есть только строка 78. ? соответствует столбцу, определяющему порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...