复杂MySQL查询具有鲜明

问题描述:

这里是我的“其实这是两个不同的表的视图”复杂MySQL查询具有鲜明

  • 获取数据的第一个表是用户表中保存有关用户的一切表。
  • 第二个是日志表,用于记录观看视频的人以及他们何时查看视频。

    log_views.id, 
    log_views.user_id, 
    log_views.video_id, 
    log_views.date, 
    users.user_key, 
    users.name_display, 
    users.img_key 
    

什么我想是显示最后18个用户查看视频,但我不希望任何重复的用户。因此,如果用户在过去的18周内出现两次,我只想要他的最新视图,然后跳过所有其他视图。

我尝试使用DISTINCT关键字,但我得到多个列,所以它没有工作。

这就是我最终使用。 recent_video_viewers是我做了,所以我没有做任何联接

SELECT id, MAX(date), user_id, img_key, random_key 
FROM recent_video_viewers 
WHERE video_id = '$vr[id]' AND img_key != '' 
GROUP BY user_id 
ORDER BY MAX(date) DESC 
LIMIT 18 

我不知道这是否是做到这一点的最好办法,但它的工作原理的视图的名称。

这是一个有效的查询。它假定您只需要给定视频ID(@video_id)的日志:

SELECT log_date, user_id, name_display 
FROM (
    SELECT MAX(l.date) AS log_date, user_id 
    FROM log_views AS l 
    WHERE ([email protected]_id) 
    GROUP BY user_id 
    ORDER BY log_date DESC 
    LIMIT 18 
) AS top 
INNER JOIN users AS u ON (u.user_key=top.user_id)