复杂的MySQL查询与不同

时间:2011-03-29 19:40:26

标签: mysql sql database

这是我从“实际上它是两个不同表的视图”

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

    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关键字,但我收到了多个列,因此无效。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

这就是我最终使用的内容。 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

我不确定这是否是最好的方法,但它有效。

答案 2 :(得分:0)

这是一个有效的查询。它假设您只需要给定视频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 (l.video_id=@video_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)