从特定用户以前从未见过的mysql表中提取随机ID

时间:2011-03-21 20:37:11

标签: php mysql

使用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,条件是特定用户(user_id)尚未查看此p_id。

这看起来应该很简单但是我尝试使用“WHERE problems.p_id!= records.p_id AND user_id = $ id”没有用。任何关于正确查询的建议或获得所需结果的更好方法都会很棒。

1 个答案:

答案 0 :(得分:1)

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。

你需要索引

  • (problems.p_id)
  • (records.user_id,records.p_id)