我有一个跟踪书籍的数据库。 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/