php - 从数据库中选择随机项目

标签 php mysql sql

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

-----------------------------------------------
   BookID   |    UserID      |     SecID
-----------------------------------------------
     66     |      1         |      3
-----------------------------------------------
     67     |      1         |      2
-----------------------------------------------
     68     |      1         |      5
-----------------------------------------------
     69     |      2         |      2
-----------------------------------------------

我想从一系列可能的部分中随机选择一本属于特定用户的书

例如 如果 $userID = 1$arrayA = array(1,2,3); 输出应该是 book 66 67

我本可以只使用 array_rand($arrayA, 1); 然后注入(inject)函数返回的任何随机数以使用此 sql 语句拉书

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

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

最佳答案

  SELECT *
    FROM `books`
   WHERE userID = 1
     AND typeID IN (1, 2, 3)
ORDER BY RAND()
   LIMIT 1

如果您有很多符合条件的结果,ORDER BY RAND() 会相当昂贵,但对于小结果集和最简单的方法来说是无关紧要的。

关于php - 从数据库中选择随机项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9306748/

相关文章:

java - 如何在 PHP 中与 java 代码通信

php - 将完整字符串与 MySQL 列中的部分值(邮政编码)进行匹配

mysql - 优化这段 MYSQL 代码以获得更好的执行时间

mysql - 我们如何使用 count 进行子查询,其中所有查询的参数都相同

PHP - 添加/删除回车到 base 64 编码字符串

javascript - 在图表之间切换

php - 使用日期MySQL触发器自动删除数据

mysql - 在列上创建索引时会发生什么?

php - 从类别页面 wordpress 中删除主题生成的自定义 css

java - Spring框架中的Mysql MySQLSyntaxErrorException