Как я могу найти индекс записи с помощью SQL или хранимой процедуры? - PullRequest
0 голосов
/ 15 декабря 2009

Использование SQL Server 2008, но, возможно, может относиться и к другим базам данных.

Если бы у меня были следующие данные (таблица t):

id text  date
1 Data1 2/1/2009
2 Data2 2/2/2009
3 Data3 2/3/2009
4 Data4 2/4/2009
5 Data5 2/5/2009

Как я могу найти индекс определенной записи?

indexOf (выберите идентификатор из t, где id = 1) = 0

или

indexOf (выберите идентификатор из t, где date = '2/4/2009') = 3

Я думаю, что это как-то связано с ROW_Number (), но не совсем уверен ...

Ответы [ 2 ]

2 голосов
/ 15 декабря 2009

Да, ROW_NUMBER - это именно то, что вы хотите использовать вместе с предложением OVER. Вы можете выполнить то, что вы пытаетесь сделать, используя подзапрос или CTE, например:

;WITH Q as (
    SELECT id, text, date, ROW_NUMBER() OVER (ORDER BY date) as RowNumber 
    FROM t
)
SELECT * FROM Q WHERE RowNumber = 3
1 голос
/ 15 декабря 2009

Редактировать
выберите * из (выберите ROW_NUMBER () более (порядок по идентификатору) -1 в качестве индекса, * из таблицы) где --условие

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