Как вернуть «номер строки» первого появления SQL? - PullRequest
0 голосов
/ 27 августа 2010
                         (row number not stored in db)

------------------------
|      |     A   |     | (1)
------------------------
|      |     B   |     | (2)
------------------------
|      |     C   |     | (3)
------------------------ -----Page 1
|      |     D   |     | (4)
------------------------
|      |     E   |     | (5)
------------------------
|      |     F   |     | (6)
------------------------ -----Page 2
|      |     F   |     | (7)
------------------------
|      |     F   |     | (8)
------------------------
|      |     G   |     | (9) -----Page 3

т.е. поиск "F" вернул бы 6.

Спасибо.

пытается выполнить первую часть этого: Как запросить базу данных SQL для возврата первой «страницы», содержащей указанные данные?

Нашли эти:
последовательные номера строк из запроса

sqlite Получить номер в sqlite

Ответы [ 2 ]

1 голос
/ 27 августа 2010
SELECT COUNT(*)
FROM tbl
WHERE letter < 'F'

(вы получите число минус один, так что вам придется увеличить его на единицу потом)

0 голосов
/ 27 августа 2010

попробуйте это, но я не считаю производительность

--create table
create table t(letter char(1))
go

--insert values
BEGIN TRAN
INSERT INTO t VALUES ('A')
INSERT INTO t VALUES ('B')
INSERT INTO t VALUES ('C')
INSERT INTO t VALUES ('D')
INSERT INTO t VALUES ('E')
INSERT INTO t VALUES ('F')
INSERT INTO t VALUES ('F')
INSERT INTO t VALUES ('F')
INSERT INTO t VALUES ('G')
COMMIT TRAN
GO

--and then try the select what you want
DECLARE @temp table(num int identity(1,1), letter char(1))

--use a temp table variable to store the data with row number
insert into @temp
SELECT * FROM t

--select the value
SELECT * FROM @temp WHERE letter = 'F'
GO

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