我要取用户没有看到的前10个问题。
为此,我需要将该用户看到的问题存储到一个名为user_questions的表中
所以,我现在的问题是:
SELECT * from questions WHERE questions.id NOT IN (select question_id from user_questions where user_id=1) LIMIT 0, 10
据我所知,这个查询应该比类似的连接查询慢。如何构造产生相同结果的联接查询?

最佳答案

等效的联接查询是:

select q.*
from questions q left outer join
     user_questions uq
     on uq.question_id = q.id and
        uq.user_id = 1
where uq.user_id is null
limit 0, 30

不过,有一点需要注意的是,结果不会是随机的。通常使用limit子句,还可以指定order by

09-26 17:19