我需要为符合一系列条件的每个用户返回表中的最新 2 行。
因此,例如,“从产品表中获取最新的 2 行,其中用户的用户状态不是挂起,并且用户注册时间超过一周”。
我不太确定从哪里开始。如果每个用户一行,那就很简单了。同样,如果我可以转储结果并在我的 PHP 代码中进行进一步过滤,我可以让它以这种方式工作(但是我需要 LIMIT 分页,所以它需要全部在查询中)。
我设置了一个非常简化的表格,其中包含一些数据,只是为了便于计算,您可以在这里看到:
http://sqlfiddle.com/#!2/b32d2
本质上,解决方案查询将为每个“owner_id”返回最多两行,并且返回的两行将是“添加”列中的 2 个最高日期。
希望这是有道理的,并感谢任何可以提供帮助的人。
最佳答案
这是非常低效的,但它有效。
SELECT * FROM `products` p1
WHERE (SELECT COUNT(*)
FROM `products` p2
WHERE p2.added > p1.added
AND p2.owner_id = p1.owner_id
) < 2
关于mysql - 每个用户返回 2 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19714531/