Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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中使用join时,从右表中选择最新记录_Mysql_Sql_Select_Group By_Max - Fatal编程技术网

在mysql中使用join时,从右表中选择最新记录

在mysql中使用join时,从右表中选择最新记录,mysql,sql,select,group-by,max,Mysql,Sql,Select,Group By,Max,正在尝试联接两个表并希望从第二个表获取最新记录 SELECT * FROM gallery LEFT JOIN images_videos ON gallery.ID=images_videos.gallery_id WHERE gallery.user_id ="+another_userid+" GROUP BY gallery.ID ORDER BY gallery.ID DESC 通过这个查询,我从images\u视频中获得了最早的图像 但是 我想从images\u

正在尝试联接两个表并希望从第二个表获取最新记录

SELECT * 
FROM gallery 
    LEFT JOIN images_videos ON gallery.ID=images_videos.gallery_id 
WHERE gallery.user_id ="+another_userid+" 
GROUP BY gallery.ID 
ORDER BY gallery.ID DESC
通过这个查询,我从images\u视频中获得了最早的图像 但是 我想从images\u videos表中选择最新的图像 请帮忙 我在gallery表的图像和视频中有多个条目


我想要每个图库的最新图像。

首先,您当前的
ORDER BY
语句按图库ID排序,而不是按图像视频ID排序。因此,您将按降序获取图库,但这些图库中的图像将没有定义的顺序。因为它们可能是按创建顺序物理存储的,所以这就是您接收它们的顺序

我被分组搞糊涂了。这可能不是您想要的:它会为每个库创建一行。它甚至不是合法的SQL,但我认为mysql允许它并提供随机数据。因此,您可以在每个图库中获得一行,其中包含来自该图库的随机图像和视频。同样,可能是最早的一个,因为这是它的物理存储方式


删除
分组依据
和排序依据图像\u视频ID。您确实在图像\u视频上有某种列,可以让您确定某种顺序,对吗?

意味着您的图像\u视频表有一个ID字段

SELECT * 
FROM   gallery g1 
       LEFT JOIN images_videos iv1 
              ON g1.id = iv1.gallery_id 
WHERE  gallery.user_id = "+another_userid+" 
       AND iv1.id = (SELECT Max(id) 
                     FROM   images_videos iv2 
                     WHERE  iv1.gallery_id = iv2.gallery_id) 
试试这个:

SELECT * 
FROM gallery g 
LEFT JOIN (SELECT * 
           FROM images_videos iv 
           INNER JOIN (SELECT iv.gallery_id, MAX(imageVideoId) imageVideoId 
                       FROM images_videos iv GROUP BY iv.gallery_id
                      ) A ON iv.gallery_id = A.gallery_id AND iv.imageVideoId = A.imageVideoId
          ) iv ON g.ID=iv.gallery_id 
WHERE g.user_id ="+another_userid+" 
GROUP BY g.ID 
ORDER BY g.ID DESC

您可以使用自定义联接来获得:

SELECT * 
FROM gallery 
INNER JOIN
(
    SELECT gallery_id,MAX(images_videoid) AS images_videoid 
    FROM images_video GROUP BY gallery_id 
) LATEST

ON gallery.ID=LATEST.gallery_id 
WHERE .... 
ORDER ....
代码的这一面

 SELECT gallery_id,MAX(images_videoid) AS images_videoid 
FROM images_video GROUP BY gallery_id 
在images表中为每个gallery_id返回最新的行(images_videoid是identity,所以最新的是max number)


在这之后,您可以在galleryid上加入结果表(gallery\u id,latest images\u videoid),以获取每个gallery的最新图像。

请更好地描述您想要的内容。每个画廊条目在image_视频中是否有多个条目?对于每个图库条目,您希望从image_视频中获得最新的图像吗?刚刚通过分组删除,结果很多,我只想要一个。请给出一个实际的例子首先我选择了所有匹配图像的行。然后我说只选择gallery_id匹配的行,它是具有最高id(MAX(id))的行