2010-10-22 4 views
3

Как я могу найти пятую запись в таблице, используя sql-запрос?sql запрос, чтобы найти пятую запись

+1

Что SQL диалект ? –

+5

Зачем вам это нужно? Похоже, что вы делаете что-то не так - то, как запись хранится в таблице, не должна быть основой запроса. – Oded

ответ

2
SELECT TOP 1 * FROM (SELECT TOP 5 * FROM Table T ORDER BY Column ASC) ORDER BY Column Desc 
2

Если вы используете SqlServer вы можете использовать ключевое слово TOP для достижения этой цели.

select top 1 * from(
select top 5 * from myTable order by orderingColumn) as A 
order by orderingColumn desc 

Если вы используете Oracle это должно работать (однако я не в состоянии проверить это сейчас)

select * 
    from (
    select *, row_number() over (order by orderingColumn) r 
     from items 
) 
where r = 5; 
+0

может немного объяснить, как работает запрос sqlservver – NoviceToDotNet

+0

Я отредактировал, потому что я оставил имя поля, которое я использовал для теста (utente) вместо «orderingColumn». Думаю, теперь должно быть яснее. Подзапрос извлекает первые 5 строк, упорядоченных по желаемому столбцу (наша искомая строка является последней в этом наборе), а затем отменяет порядок этого подмножества и берет первую строку, которую мы ищем. –

1

Пятая запись только в MySQL

SELECT * FROM anytable LIMIT ORDER BY id LIMIT 4,1

10

Если вы чувствуете себя спорным, подумайте о том, чтобы использовать «SELECT * FROM table LIMIT 1» и утверждать, что, поскольку SQL не обещает возвращать результаты в каком-либо конкретном порядке, возвращаемая строка духовно эквивалентна пятой, а затем показывает вашу татуировку: «N-й элемент неупорядоченного набора бессмыслен!»

+2

Это заставило меня улыбнуться :-) –

+0

+1 чисто для «духовно эквивалентного» :) –

0

Для SQL Server (последние-иш воплощений, во всяком случае) что-то, как это должно работать:

SELECT 
    * 
FROM 
    (
    SELECT 
     *, 
     ROW_NUMBER() OVER (ORDER BY the_table.the_column) 'row_num' 
    FROM 
     the_table 
) numbered_rows 
WHERE 
    row_num = 5 

Однако, я на самом деле положил мой голос с ответом Томаса L Holaday в :)

Смежные вопросы