我的 SQL 查询中有一个问题游戏测验
- 问题 1 到 10
- 我使用sql随机查询来选择问题
- 使用array push 保留上一题
- 使用 sql 查询 [query from array push] 选择新问题(不再显示以前的问题)
第一个问题开始
- 1:
SELECT * FROM questions WHERE catid="9" ORDER BY RAND() LIMIT 0 , 1
- 2: SQL查询get id=2 so array push =
(2)
第二题开始(如果答案正确)
- 1:
SELECT * FROM questions WHERE catid="9" AND ( id <> "2" ) ORDER BY RAND() LIMIT 0 , 1
- 2: SQL 查询得到 id=5 所以数组 push =
(2,5)
第三题开始(如果答案正确)
- 1:
SELECT * FROM questions WHERE catid="9" AND ( id <> "2" AND id <> "5" ) ORDER BY RAND() LIMIT 0 , 1
2: SQL 查询 get id=1 so array push =
(2,5,1)
...问题开始(如果答案正确)
1:....
- 2:....
所以我只想知道我是否有 1000 个问题,所以我的 SQL 查询将:
SELECT * FROM questions WHERE catid="9" AND ( id <> "2" AND id <> "5" AND id <> "1" AND .... AND id <> "999" ) ORDER BY RAND() LIMIT 0 , 1
这对于页面处理是否应该很慢?
如果很慢,我们是否应该有另一种方法来处理这个查询?谢谢....
最佳答案
如何在开始时获取整个问题数组,然后从中选择一个随机问题(使用随机数乘以数组的长度)并在询问之后 - 只需将其从数组中删除或将其移动到一个不同的数组——也许是“questionsAsked”之类的?这样你就不需要不断地添加到排除列表中——你只需从剩下的问题中选择? questionsAsked 数组保存了被问问题的列表。
关于PHP MySQL : GET new way to query SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36196064/