0

我在 mySQL 数据库中有 2 个表

第一个表是 tbl_article_category,它有 article_category_id 作为主键,第二个 tbl_article,它有 article_id 作为主键和 article_category_id 作为外键

现在我想从每个类别中获取最后五个重新编码,所以如果我有 5 个类别,我想从每个类别中获取 25 个重新编码最后五个

你有没有想过要重新编码

4

2 回答 2

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字段。

于 2013-09-11T13:51:22.153 回答
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 行,性能应该没问题。

于 2013-09-11T13:47:00.153 回答