SQL Выберите порядок записи по дате создания записи - PullRequest
0 голосов
/ 11 января 2012

У меня есть устаревшая система, которая работает на SQL Server 2005.

В текущей таблице есть только столбец даты ГГГГММДД, в нем отсутствуют как текущий порядковый номер, так и время.

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

Ответы [ 2 ]

1 голос
/ 11 января 2012

Если у вас нет действительной информации о времени или другой информации, такой как векторная автонумерация (IDENTITY), которая не была изменена, тогда общий ответ будет NO

НО

Дьявол кроется в деталях - это зависит от используемого вами механизма базы данных.

0 голосов
/ 29 января 2016

Просто, чтобы это могло помочь кому-то другому. (Я понимаю, что этот OP упоминает MSSQL 2005)

В SQL 2008 и выше для этого можно использовать виртуальный столбец %%physloc%%. Это недокументировано и не поддерживается. Однако во многих случаях это оказалось полезным.

Шестнадцатеричные значения в %%physloc%% указывают не только номер файла и номер страницы; они также указывают номер слота на странице. Однако кодировка не очень удобочитаема для человека.

Следующие функции могут использоваться для определения значений в этом виртуальном столбце.

1. Функция sys.fn_PhysLocFormatter

Эта функция превращает шестнадцатеричное значение, возвращаемое %%physloc%%, в приятный для восприятия человеком формат. Вы можете использовать это так:

SELECT *,sys.fn_PhysLocFormatter(%%physloc%%) AS PLF
  FROM dbo.tst AS T
ORDER BY PLF;

Выход этой функции имеет формат (FileNumber:PageNumber:SlotNumer). Ниже приведен результат вышеприведенного запроса:

sys.fn_PhysLocFormatter

2. Функция sys.fn_PhysLocCracker

Это табличная функция, вы должны использовать оператор CROSS APPLY, чтобы вызвать ее в запросе:

SELECT * FROM dbo.tst AS T
CROSS APPLY sys.fn_PhysLocCracker(%%physloc%%) AS FPLC
ORDER BY FPLC.file_id, FPLC.page_id, FPLC.slot_id;

Возвращает три столбца: file_id, page_id и slot_id. При использовании с той же таблицей, которую вы видели в предыдущем примере, выходные данные выглядят так:

sys.fn_PhysLocCracker

<ч />

Ссылки:

Где мои ряды? - Использование виртуального столбца %% physloc %%

SQL Server - Найти физическое местоположение записей

SQL Server 2008: Новая (недокументированная) физическая функция локатора строк

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