使用 mysql 和 PHP,我想设置一个查询,从问题表中提取特定用户尚未看到的问题。
我有两个表,1) 问题表和 2) 记录表。
问题表有两个字段:p_id、prob。此表包含要显示给用户的问题列表。
记录表有4个字段:record_id、user_id、p_id、num_seen。每当用户看到特定问题时,都会记录用户的 ID (user_id)、他/她看到的问题 (p_id) 以及用户看到该问题的次数 (num_seen)。
我正在尝试编写的查询将从问题表中选择一个 p_id,条件是该 p_id 尚未被特定用户 (user_id) 查看。
这看起来应该很简单,但我尝试使用“WHERE problems.p_id != records.p_id AND user_id=$id”没有奏效。任何有关正确查询或获得所需结果的更好方法的建议都很棒。
最佳答案
SELECT p.*
FROM problems p
LEFT JOIN records r
ON r.user_id = 100
AND r.p_id = p.p_id
WHERE p.p_id IS NULL
AND p.p_id >= Rand() * (SELECT Max(p_id)
FROM problems)
LIMIT 1
其中 100 是当前的 user_id。
你需要索引
- (问题.p_id)
- (records.user_id,records.p_id)
关于php - 从特定用户以前从未见过的 mysql 表中提取一个随机 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383351/