我有两个表: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/