我正在尝试进行MySQL调用,我从一个表中选择一些来源,从另一个表中选择相关文章,然后按最新文章对源进行排序。 (通过订购文章找到最新文章的日期)
文章在数据库
中被称为Newsitems我的查询目前看来是这样的
SELECT source.Name, source.Id, newsitem.UploadedAt
FROM northern_light.source
INNER JOIN northern_light.source_newsitem
ON source.Id = source_newsitem.SourceId
INNER JOIN northern_light.newsitem
ON source_newsitem.NewsItemId = newsitem.NewsItemId
WHERE source.Name LIKE '%%'
GROUP BY source.Id
ORDER BY newsitem.UploadedAt DESC
LIMIT 0, 100;
问题在于它没有选择最新的'Newsitem'。 有没有办法在我通过newsitem.UploadedAt订购DESC时选择source.name,source.id和newsitem.uploadedAt?
提前致谢。
答案 0 :(得分:1)
在ORDER BY之后执行GROUP BY,方法是使用GROUP BY包装查询:
SELECT test.* FROM (
SELECT source.Name, source.Id, newsitem.UploadedAt
FROM northern_light.source
INNER JOIN northern_light.source_newsitem
ON source.Id = source_newsitem.SourceId
INNER JOIN northern_light.newsitem
ON source_newsitem.NewsItemId = newsitem.NewsItemId
WHERE source.Name LIKE '%%'
ORDER BY newsitem.UploadedAt DESC
LIMIT 0, 100
) AS test GROUP BY source.Id;