Выберите строки, используя Row_Number () без ORDER BY ID - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь выбрать строки между конкретными номерами строк (например, от 1 до 50 или от 51 до 10 и т. Д.).

Ниже моя таблица MatTk схема и все столбцы допускают пустые значения:

tk_id [varchar(50)] | mat_id [varchar(50)] | ven_id [varchar(50)] | tk_rate [money]
   1023                     104                     2212               120.11 

Эта статья Выберите подмножество строк с помощью Row_Number () предлагает ORDER BY id, но я хочу избежать этого и показать его в естественном порядке данных таблицы.

Также проверьте эту статью SQL Server 2005 ROW_NUMBER () без ORDER BY , который предлагает вставку в временную таблицу, но это не вариант, так как в таблице MatTk есть миллионы строк.

Есть ли способ запрашивать строки по номеру строки без порядка по идентификатору и без создания временной таблицы?

1 Ответ

0 голосов
/ 08 мая 2018

Эта статья Выбор подмножества строк с использованием Row_Number () предлагает ORDER BY id, но я хочу избежать этого и отображать в естественном порядке данных таблицы.

Не существует такой вещи , как "естественный порядок данных таблицы".
Таблицы базы данных неупорядочены по своей природе.

Это означает, что строки, возвращаемые из оператора select без предложения order by, упорядочены произвольно (обратите внимание, что произвольный не совпадает со случайным). Для получения дополнительной информации, прочитайте Майкл Дж. Сварт Без ЗАКАЗА, вы не можете зависеть от порядка результатов

Если вы не заботитесь о порядке чисел в функции row_number, вы можете использовать

row_number() over(order by (select null))

Обратите внимание, однако, что при использовании этого будут возвращаться произвольные номера строк - это означает, что им нельзя доверять, чтобы они оставались неизменными при каждом выполнении запроса.

...