在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))的行