Php 从数据库中随机选取项目

Php 从数据库中随机选取项目,php,mysql,sql,Php,Mysql,Sql,我有一个记录书籍的数据库。books表如下所示: ----------------------------------------------- BookID | UserID | SecID ----------------------------------------------- 66 | 1 | 3 -----------------------------------------------

我有一个记录书籍的数据库。books表如下所示:

-----------------------------------------------
   BookID   |    UserID      |     SecID
-----------------------------------------------
     66     |      1         |      3
-----------------------------------------------
     67     |      1         |      2
-----------------------------------------------
     68     |      1         |      5
-----------------------------------------------
     69     |      2         |      2
-----------------------------------------------
我想从一系列可能的章节中选择一本由特定用户拥有的随机书籍

比如说 如果$userID=1和$arrayA=array1,2,3;输出应为第66册或第67册

我可以用array_rand$arrayA,1;然后注入函数返回的任意随机数,以使用此sql语句提取书本

SELECT * FROM `books` WHERE userID = '1' AND typeID = '$randomSection' LIMIT 1

但是,如果array_rand函数返回1,sql语句将不返回任何内容。只要用户在其中一个给定部分中至少列出了一本书,我如何编写更好的sql语句来保证结果?

您的查询有一点变化:

SELECT * FROM 'books' WHERE userID = '1'  order by rand() LIMIT 1

只需对您的查询进行一点更改:

SELECT * FROM 'books' WHERE userID = '1'  order by rand() LIMIT 1
如果有许多结果与条件匹配,则按兰德排序的代价相当高,但对于小的结果集和最简单的方法来说,这是无关紧要的

如果有许多结果与条件匹配,则按兰德排序的代价相当高,但对于小的结果集和最简单的方法来说,这是无关紧要的。

尝试以下方法:

select * from t1
where userid = '1' and secid in ('1', '2', '3')
order by rand()
limit 1
当然,1和1、2、3将是其中的参数。

尝试以下操作:

select * from t1
where userid = '1' and secid in ('1', '2', '3')
order by rand()
limit 1

当然,1和1、2、3将是参数。

事实上,这肯定是正确的答案。你知道实现同样目标的更便宜的方法吗。理论上?这在很大程度上取决于您的特定数据集。请搜索这个网站,你会找到很多答案。事实上,这肯定是正确的答案。你知道实现同样目标的更便宜的方法吗。理论上?这在很大程度上取决于您的特定数据集。请搜索此网站,你会找到许多答案。不幸的是,只有一个答案可以接受。不过我把你的答案排得很高!幸运的是,只有一个答案是可以接受的。不过我把你的答案排得很高!谢谢!这是一本关于艺术的书,它是一本关于艺术的书,它是一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书。这本书的作者是:BookID,UserID,SecID,66,1,3,67,1,2,哇!这是一本关于艺术的书,它是一本关于艺术的书,它是一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书,一本关于艺术的书。Büchertish sieht folgendermaßen aus:--------------------------------------BookID | UserID | SecID--------------------66 | 1 | 3--------------------67 | 1 | 2-------