php - MYSQL RANDOM SELECT UNIQUE ROWS - 排除先前选择的行

标签 php mysql random unique

我有一个包含 16K 条目的表
我要随机抽取 44 个条目
但我不想重复相同的条目不止一次(永远)
所以我有一个每用户列表,将已使用的“ID”作为逗号分隔的字符串保存在表中。
我使用该列表来 SELECT ... NOT IN (used_IDs)

问题是这个列表变得太大,我相信由于大小而 sql 调用失败

知道如何更有效地做到这一点吗?

Questions table:
+------+-------+-------+
| id   | Qtext | Tags  |
+------+-------+-------+

Test table:
+------+-------+
| id   | QIDs  |
+------+-------+

Results table:
+------+-------+-------+
| id   | tID   | uID   |
+------+-------+-------+

我需要根据结果表从问题表中选择唯一的随机值。 (将测试 ID 与问题 ID 相关联)

目前正在尝试使用:

SELECT DISTINCT `questions`.`ID`
FROM `questions`, `tests`, `results`
WHERE 
`questions`.`ID` NOT IN (`tests`.`qIDs`)
AND `results`.`uID` = 1 AND `tests`.`ID` = `results`.`tID`
AND 4 IN ( `questions`.`tags`) 
AND "http://www.usmlestep2qna.com" = `provider`
ORDER BY RAND() LIMIT 27;

有什么想法吗?

最佳答案

您可以创建一个 tall 表来存储它们,而不是将使用的用户 ID 值放在逗号分隔的字符串中的一列中。这应该会产生更好的性能

关于php - MYSQL RANDOM SELECT UNIQUE ROWS - 排除先前选择的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12434602/

相关文章:

php - 非登录用户 Woocommerce,重定向

php - 从数据库中删除最早 7 天的行

c++ - 用特征随机排列矩阵的行/列

ruby-on-rails - 使用字符串作为种子生成器在 ruby​​ on Rails 中生成随机数

php - 使用 AJAX 将复选框值(如果未选中则为 0)传递给 PHP

php - 如何将 MySqli 更新为 php5-mysqlnd

php - 如何优化导入/导出数据的查询,从 2 个表到 1 个表,记录超过 200k

MySQL 前 6 个月累计总和

java - 随机数发生器

java - 允许 Glassfish 和 PHP 使用 Apache 在同一台服务器上协同工作