0

次のような単純な MySQL クエリがあります。

 SELECT * ,
 ( MATCH (table.get) AGAINST('playstation ' IN BOOLEAN MODE) ) 
+ ( table.get LIKE '%playstation%') AS _score 
FROM table 
JOIN users on table.id_user = users.id
 WHERE table.expire_datetime > 1375997618
 HAVING _score > 0 
ORDER BY RAND(table.id) ,_score DESC ;

このクエリを MySQL で実行すると、通常は 1 つ以上のレコードが返されます。ここでは、1 つを制限してランダムに 1 つを取得したいと考えています。常に同じレコードではありません。

出来ますか?

4

3 に答える 3

2
select * from <my_table> 
ORDER BY RAND()
LIMIT 4
于 2013-08-08T21:44:30.377 に答える
1

乱数ジェネレーターのシードをやめます。私の推測では、最初に検出されたテーブル ID が返されているため、番号は同じ順序で生成されます。

 SELECT * ,
 ( MATCH (table.get) AGAINST('playstation ' IN BOOLEAN MODE) ) 
+ ( table.get LIKE '%playstation%') AS _score 
FROM table 
JOIN users on table.id_user = users.id
 WHERE table.expire_datetime > 1375997618
 HAVING _score > 0 
ORDER BY RAND()
LIMIT 1;
于 2013-08-08T21:44:49.843 に答える