-1

SQLデータベースをvarにロードしたり、forループで必要なアイテムをプルしたりせずに、SQLデータベースからプルしようとしています。

5番目のインデックス " " 5 " " 10番目のインデックスの5つのアイテムを取得するにはどうすればよいですか...

これは私がやっていることであり、ハッキングする方法ではありません。

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

使用しているデータベース サーバーによって異なります。

たとえば、MySQL は非常に単純ですが非標準のソリューションをサポートしています。

SELECT * FROM Greeting
LIMIT 5 OFFSET yourStartingIndex 

他のサーバーは、「オフセットによる制限」を実行する 1 つ以上の方法をサポートしています。

SQL 標準では、次の 3 つの方法が提供されています。

  • OFFSET と FETCH FIRST の使用:(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

于 2013-06-24T22:28:59.600 に答える