Будучи не совсем связанным с графиками SVG, но ища то же самое, я нашел хороший источник тщательно собранной полезной информации, чтобы ответить на ваш вопрос: http://wiki.python.org/moin/NumericAndScientific/ Plotting
Это классический вопрос для интервью.
В Ms SQL 2005+ вы можете использовать ключевое слово ROW_NUMBER () и иметь Predicate ROW_NUMBER = n
USE AdventureWorks;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE RowNumber = 5;
В SQL2000 вы могли бы сделать что-то вроде
SELECT Top 1 *FROM
[tblApplications]
where [ApplicationID] In
(
SELECT TOP 5 [ApplicationID]
FROM [dbo].[tblApplications]
order by applicationId Desc
)
Как насчет
SELECT TOP 1 * FROM
(SELECT TOP 8 * FROM Comments ORDER BY foo ASC)
ORDER BY foo DESC
Во-первых, вы должны сказать, какую СУБД вы используете.
Во-вторых, вы должны тщательно обдумать, чего именно вы пытаетесь достичь. Реляционные базы данных основаны на наборах. В общем, порядок элементов в наборе не имеет значения. Вы захотите спросить, почему это имеет значение в данном случае, а затем посмотрите, есть ли лучший способ встроить концепцию порядка в сам запрос.
Например, в SQL Server 2005 (и других СУБД) вы можете использовать функция ROW_NUMBER для присвоения порядкового номера каждой возвращаемой строке на основе заданных вами критериев. Затем вы можете выбирать строки на основе номера строки. Пример из электронной документации:
USE AdventureWorks;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60;
SELECT * FROM comments WHERE ...conditions... LIMIT 1 OFFSET 8
OFFSET - это хорошо для MySQL
Что ж, в T-SQL (диалект SQL Server) вы можете сделать следующее:
SELECT TOP 1 *
FROM (SELECT TOP 8 *
FROM Table
ORDER
BY SortField)
ORDER
BY SortField DESC
Таким образом вы получите 8-ю запись.
Для SQL Server 2005:
select rank() OVER (ORDER BY c.subject, c.date) as rank, c.subject, c.date
from comments c
where rank = 8
Я прочитал вопрос и ваши комментарии о том, что вам нужны следующие 3 комментария в блоге и т. Д.
Как структурированы ваши таблицы?
Предположим, что у вас есть идентификатор сообщения в блоге и идентификатор комментария генерируется в возрастающем порядке для каждого сообщения в блоге, вы можете выполнить SELECT на основе текущего идентификатора.
например, если blogpostId = 101, вы получите первые 3 комментария в порядке публикации Мне бы. Теперь предположим, что вы хотите получить следующие 3 комментария - вы можете сделать SELECT WHERE commentId между показанным идентификатором последнего комментария и идентификатором комментария - 3
Но все это зависит от того, как определены ваши таблицы.
В SQL 2000, где у вас нет функции ROW_NUMBER (), вы можете использовать такой обходной путь:
SELECT CommentsTableFieldList, IDENTITY(INT, 1,1) as seqNo
INTO #SeqComments
FROM Comments
SELECT * FROM #SeqComments
WHERE seqNo = 8
Из справочника SELECT используйте ключевое слово LIMIT:
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows
Примечание: это для MySQL, другие механизмы SQL могут иметь другое ключевое слово.