我正试图从我的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');
答案 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标准提供了三种方式:
SELECT * FROM Greeting OFFSET yourStartingIndex ROWS FETCH FIRST 5 ROWS ONLY
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