从sql获取特定索引

时间:2013-06-24 21:51:50

标签: sql

我正试图从我的sql数据库中取出而不必将其加载到var中并使用for循环拉出我想要的项目。

如何获得第5个索引中的5个项目 “”5“”第10个索引......

这就是我正在做的事情,而不是通过hackish的方式。

function get_db(a) {
 index_count=a

 db.transaction(
  function(tx) {

  var rs = tx.executeSql('SELECT * FROM Greeting');
  var r=""

  if (up_check === 0){
      index_count = index_count +4
        }
        r += rs.rows.item(index_count).salutation + ": " + rs.rows.item(index_count).salutee + "\t\t"
   })
return r
}

我理想的是想得到像

这样的东西
var rs = tx.executeSql('SELECT * FROM index_count (and the next for items) Greeting');

2 个答案:

答案 0 :(得分:1)

如果您是SQL Server 2005或更高版本,则可以使用ROW_NUMBER()

像这样(徒手):

SELECT *, ROW_NUMBER() OVER(ORDER BY [youordercolumns]) AS [RowNum]
FROM [youtable]    
WHERE [RowNum] BETWEEN @index AND @index + 4

答案 1 :(得分:1)

这实际上取决于您使用的数据库服务器。

例如,MySQL支持一种非常简单但非标准的解决方案:

SELECT * FROM Greeting
LIMIT 5 OFFSET yourStartingIndex 

其他服务器支持一种或多种执行“带偏移限制”的方法。

SQL标准提供了三种方式:

  • 首先使用OFFSET和FETCH :(自SQL:2008起)
SELECT * 
FROM Greeting 
OFFSET yourStartingIndex ROWS 
FETCH FIRST 5 ROWS ONLY
  • 使用Window函数:(自SQL:2003)
SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY YourOrderColumns ASC) AS rownum,
    columns
  FROM tablename
) AS foo
WHERE rownum > yourStartingIndex AND rownum <= (4+yourStartingIndex)
  • 使用光标:
DECLARE cursor-name CURSOR FOR ...
OPEN cursor-name
FETCH RELATIVE number-of-rows-to-skip ...
CLOSE cursor-name

链接:http://troels.arvin.dk/db/rdbms/#select-limit-offset