-1

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

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

这就是我正在做的事情,而不是骇人听闻的方式。

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');
4

2 回答 2

1

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

像这样的东西(徒手):

SELECT *, ROW_NUMBER() OVER(ORDER BY [youordercolumns]) AS [RowNum]
FROM [youtable]    
WHERE [RowNum] BETWEEN @index AND @index + 4
于 2013-06-24T22:04:16.963 回答
1

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

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

SELECT * FROM Greeting
LIMIT 5 OFFSET yourStartingIndex 

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

SQL标准提供了三种方式:

  • 使用 OFFSET 和 FETCH FIRST:(自 SQL:2008 起)
SELECT * 
FROM Greeting 
OFFSET yourStartingIndex ROWS 
FETCH FIRST 5 ROWS ONLY
  • 使用窗口函数:(自 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

于 2013-06-24T22:28:59.600 回答