-1

ランダムな行を取得したい HWC というテーブルがあり、データベースには約 10,000 のエントリがあり、以前使用していた方法は遅すぎました。

ここに私のクエリがあります:

SELECT *
FROM HWC AS r1 JOIN
   (SELECT (RAND() *
                 (SELECT MAX(id)
                    FROM HWC)) AS id)
    AS r2 WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 1

PHPで取得するエラーは次のとおりです。

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM HWC AS r1 JOIN (SELECT (RAND() * (SELECT MAX(id) FROM HWC)) AS id) A' at line 2

SELECT * FROM (`SELECT` * FROM HWC AS r1 JOIN (SELECT (RAND() * (SELECT MAX(id) FROM HWC)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT 1)

モデルの完全な PHP コード:

function random()
{
$query = "SELECT *
FROM HWC AS r1 JOIN
   (SELECT (RAND() *
                 (SELECT MAX(id)
                    FROM HWC)) AS id)
    AS r2 WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 1";
$result = $this->db->get($query);

return $result->result_array();
}
4

2 に答える 2

1

私の get() は query(); だったはずです。現在、完璧かつ高速に動作しています。

于 2013-06-08T23:46:38.727 に答える
0

2 番目の目盛りを外しSELECTます。

SELECT * FROM (SELECT * FROM HWC ...
于 2013-06-08T23:41:27.657 に答える