Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复杂的MySQL查询,具有不同的_Mysql_Sql_Database - Fatal编程技术网

复杂的MySQL查询,具有不同的

复杂的MySQL查询,具有不同的,mysql,sql,database,Mysql,Sql,Database,这是我从“实际上它是两个不同表的视图”中获取数据的表 第一个表是users表,它包含关于用户的所有信息 第二个是日志表,记录观看视频的人和观看时间 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年中出现两

这是我从“实际上它是两个不同表的视图”中获取数据的表

  • 第一个表是users表,它包含关于用户的所有信息
  • 第二个是日志表,记录观看视频的人和观看时间

    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\u video\u 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\u 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)