我有以下表格
articles_category
id title sef_title
articles_data
id cat_id title sef_title details
在每个表上,“id”是主键,articles_data.cat_id是articles_category的外键
我需要使用以下数据为每个文章类别获取一篇最新文章数据。
articles_category.id
articles_category.title
articles_category.sef_title
articles_data.id
articles_data.cat_id
articles_data.title
articles_data.sef_title
articles_data.details
我尝试了以下查询,但它显示的是第一篇文章(最早的条目),而不是最新文章。
SELECT
articles_category.id as article_cat_id, articles_category.sef_title as cat_sef_title, articles_category.title as cat_title,
articles_data.id, articles_data.cat_id as listing_cat_id, articles_data.title, articles_data.sef_title, articles_data.details
FROM articles_category, articles_data
WHERE articles_category.id = articles_data.cat_id
GROUP BY articles_data.cat_id
ORDER BY articles_data.id DESC
答案 0 :(得分:1)
如果是一对多关系,请尝试(未经测试):
SELECT *
FROM articles_category, articles_data
WHERE articles_category.id = articles_data.cat_id
AND articles_data.id in (
SELECT max(articles_data.id)
FROM articles_data GROUP BY cat_id
)
不保证GROUP BY
并且您应该在文章上使用日期,因为即使您使用自动增量,最大ID也永远不会保证是最新文章
答案 1 :(得分:0)
ORDER会影响执行GROUP功能后的记录显示。 GROUP函数识别它在搜索中看到的第一条记录。
您需要做的是执行2次查询。第一个应该是
SELECT max(articles_data.id), articles_data.cat_id ...
GROUP BY articles_data.cat_id
第二个查询应该使用那些结果主键来获取相关记录。
答案 2 :(得分:-1)
可能是创建另一个值,例如date_created,并在创建条目时在其中放置时间戳。
然后你只需要ORDER BY
约会。