尝试加入两个表并希望从第二个表中获取最新记录。
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_videos获得了最古老的图像 但 我想从images_videos表中选择最新的图像 请帮忙 我在images_videos for gallery table
中有多个条目我想要每个画廊的最新图片。
答案 0 :(得分:2)
暗示你的images_videos表有一个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)
答案 1 :(得分:1)
您可以使用自定义联接来获取:
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 ....
答案 2 :(得分:0)
首先,您当前的ORDER BY
语句按图库ID排序,而不是按image_video ID排序。因此,您将按降序获取图库,但这些图库中的图像将没有已定义的顺序。由于它们可能是按照创建的顺序进行物理存储的,因此这就是您接收它们的顺序。
我对GROUP BY
感到困惑。这可能不是你想要的东西:它为每个画廊创建一行。它甚至不是合法的SQL,但我认为mysql允许它并为您提供随机数据。因此,您可以在每个图库中获得一行,其中包含来自该图库的随机images_videos。同样,可能是最早的一个因为它是如何物理存储的。
删除GROUP BY
并按images_videos ID排序。你在images_videos上有一些专栏可以让你确定某种顺序,对吗?
答案 3 :(得分:0)
试试这个:
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
答案 4 :(得分:0)
代码的这一面
SELECT gallery_id,MAX(images_videoid) AS images_videoid
FROM images_video GROUP BY gallery_id
为图库表中的每个gallery_id带回最新一行(images_videoid是标识,所以最新版本将是最大数字)
之后,您在galleryid上加入结果,即包含(gallery_id,最新images_videoid)的表格,以获取每个图库的最新图像。