如果我必须找到不止一次查看同一视频的所有用途,那么我正在使用以下查询。oracle sql - 与加入并加入?
SELECT userid AS users,video_id
FROM watching_list GROUP BY userid , video_id HAVING COUNT(*) > 1;
^^它确实给你,对不对?如果watching_list包含用户观看的userid和videoid并且包含日期时间戳。
我想要做的是加入到用户表,基于用户名,以查找用户的名称等,而不仅仅是用户名。
我试过做简单的连接,当然它打破了我。
你不需要的子查询可言,简单的加入和加入到组将工作。只要用户标识保留在组中,那么通过基于用户向组添加更多信息将不会执行任何操作 – 2012-04-26 03:51:50
我会查看真实数据集上的执行计划。 我可以想象这比连接方法更有效,因为如果只有少数用户满足“不止一次”的条件,那么内联视图将首先执行,然后是用于访问用户表的嵌套循环连接。在连接方法中,可能会执行在watching_list和用户之间的哈希连接,然后执行聚合。事实上,在join-first查询中聚合的成本更高,因为group by子句中有更多的字节。 由于这些原因,我赞成Marc对Justin的解决方案。 – 2012-04-26 08:12:19
@DavidAldridge我同意这可能会更好,但会建议OP配置文件两种方法来确保。 – 2012-04-26 12:36:00