mysql - 每个用户返回 2 行

标签 mysql sql

我需要为符合一系列条件的每个用户返回表中的最新 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/

相关文章:

sql - 我将代码片段存储在我的数据库中。我怎样才能启用它们的修订/版本?

php - 尝试从全局变量中的静态方法访问值时出现语法错误

c# - 获取异常 "not all code path return a value"

mysql - 确定具有相同 ID 的前一条记录的时间跨度

mysql - MYSQL 函数会减慢查询速度吗?

c# - 计算一个、两个和三个连续项目的总和的更好方法

mysql - 按序列化字符串中的值排序

php - MySQL 加盟亏本

MYSQL:在 SELECT 中对自己定义的参数执行 where

mysql - SQL COUNT 零问题