mysql - 通过以下方式获取每组的前/后 n 条记录

标签 mysql sql inner-join greatest-n-per-group

我有两个表:tableA (idA, titleA)tableB (idB, idA, textB) 它们之间是一对多的关系。对于 tableA 中的每一行,我想检索 tableB 中对应的最后 5 行(按 idB 排序)。

我试过了

SELECT * FROM tableA INNER JOIN tableB ON tableA.idA = tableB.idA LIMIT 5

但它只是限制了 INNER JOIN 的全局结果,而我想限制每个不同 tableA.id 的结果

我该怎么做?

谢谢

最佳答案

大大简化和更正了 Carlos 解决方案(他的解决方案将返回前 5 行,而不是最后......):

SELECT tB1.idA, tB1.idB, tB1.textB
FROM tableB as tB1
    JOIN tableB as tB2
        ON tB1.idA = tB2.idA AND tB1.idB <= tB2.idB
GROUP BY tB1.idA, tB1.idB
HAVING COUNT(*) <= 5

在 MySQL 中,你可以使用 tB1.textB 即使它是按查询分组,因为你是按第一个表中的 idB 分组,所以 tB1 只有一个值.textB 每组...

关于mysql - 通过以下方式获取每组的前/后 n 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10191398/

相关文章:

c# - 在 C# 中从 MySql 读取特定行

mysql - 返回产品 ID 及其计数,即使 mysql 中没有它们的变体

mysql - 如何在多对多表之间的关联表上使用 save() Eloquent 方法?

Mysql 查询 select * 并且还包括 case when

SQL Select sum count 多次并使用单独的 where 值

MySQL 选择计数和行计数

sql - JPQL 中的空白 FROM 子句?

MySQL 性能、内连接、如何避免使用临时和文件排序

mysql - 使用内连接连接同一数据库中超过 5 个表

MySQL 查询计票