我在mySQL数据库中有2个表
第一个表是tbl_article_category,它有article_category_id作为主键,第二个tbl_article,它有article_id作为主键,article_category_id作为外键
现在我想获得每个类别的最后五个重新编码形式,所以如果我有5个类别,我想从每个类别获得25个重新编码
你有没有考虑过这个重新编码
答案 0 :(得分:2)
您可以尝试此查询 -
SELECT * FROM (
SELECT a1.*, COUNT(*) cnt FROM tbl_article a1
LEFT JOIN tbl_article a2
ON a1.article_category_id = a2.article_category_id AND a2.article_id <= a1.article_id
GROUP BY
a1.article_category_id, c1.article_id
) t
WHERE cnt <= 5;
它使用 article_id 值查找最后记录,但您可以使用所需的任何字段对记录进行排序,例如:通过 DATETIME 字段。
答案 1 :(得分:0)
这是一种有趣/愚蠢的方式:
select ac.category_id, a.*
from (select category_id,
substring_index(group_concat(ac.article_id order by ac.article_category_id desc),
',', 5) as last5
from tbl_article_category ac
group by category_id
) c5 join
article a
on find_in_set(a.article_id, last5) > 0
order by 1;
注意:这没有考虑性能。特别是,join
无法利用索引。但是,对于25行,性能应该没问题。