1

COUNT を使用してテーブル内の行をランダムに選択しようとしました

tx.executeSql("SELECT COUNT(*) FROM TABLE" , [], querySuccess, errorCB);

しかし、私はそれを取得する方法がわかりません。( results.rows.lengthは 1 を返します。5 行あります。) いくつかのアドバイスに従いますが、より良い解決策があるかどうか疑問に思っています。

  1. カウント
  2. 次に var numRand = Math.floor(Math.random()*(TOTALROW+1))
  3. 特定の行を照会する

更新しました

 function queryDB(tx) {
        tx.executeSql("SELECT COUNT(1) FROM WORD" , [], querySuccess, errorCB);
    }

function querySuccess(tx, results) {
   alert(results.rows.item(0));
}

results.rows(0).item(0) について、「Uncaught TypeError: Property 'rows' of object # is not a function」と表示されました。results.rows.item(0)に対して、アラート「[object OBJECT]」が表示されました。

4

1 に答える 1

2

データベースからランダムな行を選択しようとしている場合は、次を試してください。

SELECT col1, col2
FROM YourTable
ORDER BY RANDOM()
LIMIT 1

これにより、1 つのランダムな行が返されます。これにより、最初の呼び出しをスキップしてテーブルのレコード数を決定し、ランダムな値を自分で選択できます。


sqlite の一部のバージョンでは Random が無効になっているようです。この場合、おそらくテーブル内の行数を調べたいと思うでしょう:

SELECT COUNT(1)
FROM Table

次に、コードで乱数を選択し、そのレコードを照会します。

現在、results.rows.length returns 1SELECT COUNT(*) ... は 1 行のデータのみを返し、列はテーブル内の行数であるためです。

于 2012-10-18T03:36:46.553 に答える