-1

我想做一些 mysql 查询,按日期查询 5 个图像顺序,但来自 5 个不同的上传用户。

mysql数据表结构:id, user_id, image, text, date

SELECT *
FROM mytable
WHERE image!=''
GROUP BY user_id
ORDER BY date DESC 
LIMIT 5

但这GROUP BY总是导致获取user_id较早的上传图片然后制作ORDER BY date DESC,我需要由 5 个不同用户上传的新鲜 5 张图片。也许应该使用一些UNION,寻求帮助,谢谢。

4

2 回答 2

0

试试这个查询

SELECT *
FROM temp
WHERE image!=''
GROUP BY user_id
HAVING date=max(date)
LIMIT 5

不确定,mysql但这适用于sybase.

于 2013-02-11T09:29:55.950 回答
0

将 INNER JOIN 与 MAX 一起使用

SELECT 
  mytable.* 
FROM
  mytable 
  INNER JOIN 
    (SELECT MAX(id) AS ID, id FROM mytable GROUP BY user_id) AS m 
    ON m.id = mytable.id 
WHERE image != '' 
GROUP BY user_id 
ORDER BY DATE DESC 
LIMIT 5 

这将获取 max(latest) id 并将其集成到外部选择

于 2013-02-11T09:37:43.173 回答