所以这就是我的困境。我想向我的画廊展示最新的图片提交。问题是有时最近的提交是由同一个人提出的。我希望一个人只出现一次,因为有时大多数人一次上传多张照片。
参考我的表格(简化)
Users
user_id, username
Gallery
media_id, user_id, filename, date_added
这是我目前的疑问:
SELECT g.*
, u.user_id
, u.fullname AS real_name
FROM gallery g
LEFT
JOIN users u
ON u.user_id = g.user_id
WHERE g.status = 'approved'
ORDER
BY g.date_added DESC
LIMIT 10
所以我得到的结论是:
user_id: 9000 7383idsj39390.jpg
user_id: 9000 sdujnfsd83ss2.jpg
user_id: 829 sdfs3dgsdfsd3.jpg
user_id: 1000 dsfsdfsd34523.jpg
理想情况下,我希望用户成为唯一身份用户。
user_id: 9000 7383idsj39390.jpg
user_id: 829 sdfs3dgsdfsd3.jpg
user_id: 1000 dsfsdfsd34523.jpg
user_id: 500 29928sdksdui2.jpg
我真的不知道如何处理这个问题。任何帮助将不胜感激!
答案 0 :(得分:0)
如果您可以接受从每个用户的记录中获取按字典顺序排列的最大图像文件名,则可以使用子查询和GROUP BY
来标识要在结果集中显示的记录。这样的事情应该有效:
SELECT g.*,
u.user_id,
u.fullname AS real_name
FROM Gallery g
LEFT JOIN Users u
ON u.user_id = g.user_id
INNER JOIN
(
SELECT u.user_id, MAX(g.file_name) AS file_name
FROM Gallery g
LEFT JOIN Users u
ON u.user_id = g.user_id
WHERE g.status = 'approved'
GROUP BY u.user_id
) t
ON u.user_id = t.user_id AND
g.file_name = t.file_name
ORDER BY g.date_added DESC
LIMIT 10