gpt4 book ai didi

php - 随机 MySQL 查询?或者随机化一个结果?

转载 作者:行者123 更新时间:2023-11-29 00:51:38 25 4
gpt4 key购买 nike

因此,我想对 MySQL 数据库进行查询,但是,我希望结果是随机的 - 也就是说,我不希望每次都以相同的顺序出现相同的结果。这是因为我只会列出查询的前 6 项(或 2 项,在某些情况下),并且我希望数据库的所有内容都有机会出现。

是否可以在 MySQL 中执行此操作,还是我必须使用 PHP 来执行此操作?

最佳答案

要获得快速方法,请尝试以下方法:

SELECT  *
FROM (
SELECT @cnt := COUNT(*) + 1,
@lim := 10
FROM t_random
) vars
STRAIGHT_JOIN
(
SELECT r.*,
@lim := @lim - 1
FROM t_random r
WHERE (@cnt := @cnt - 1)
AND RAND(20090301) < @lim / @cnt
) i

有关其工作原理的详细说明,请参阅这篇文章:


更简单(但速度较慢)的方法是使用 ORDER BY RAND():

 SELECT *
FROM yourtable
ORDER BY RAND()
LIMIT 6

来自 the manual :

... you can retrieve rows in random order like this:

mysql> SELECT * FROM tbl_name ORDER BY RAND();

ORDER BY RAND() combined with LIMIT is useful for selecting a random sample from a set of rows:

mysql> SELECT * FROM table1, table2 WHERE a=b AND c<d
-> ORDER BY RAND() LIMIT 1000;

RAND() is not meant to be a perfect random generator. It is a fast way to generate random numbers on demand that is portable between platforms for the same MySQL version.


如果您有一个唯一的 id 字段,它从 1 递增到 n 没有任何间隙,您可以通过在 [1, n] 中选择六个随机数并使用那些身份证。这避免了扫描整个表格。

关于php - 随机 MySQL 查询?或者随机化一个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8315096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com