2017-10-11 74 views
1

我有两个表:agencieslessons获取10条记录有最近的相关元素

  • 一个机构可以有很多经验教训。
  • 一堂课只属于一个机构。
  • 一节课有日期。

我想得到10个机构(或只是他们的ID)拥有最近的经验教训。换句话说,我希望由他们的课程订购的机构仅限于10个机构。

我尝试了各种查询order bygroup by但我卡住了。我试图写的一切都是荒谬的。下面是我想的第一件事:

SELECT 
    agency_id 
FROM lessons 
GROUP BY agency_id 
ORDER BY start_at; 

,因为失败:

列“lessons.start_at”必须在GROUP BY出现子句或聚合函数中使用

我想我理解为什么。但是我迷路了,我不知道如何解决这个问题。我应该从哪里开始?

回答

4

order by和选择列表项必须是group by子句或聚合函数的一部分。你可以根据最大(即最后一个)排序课程日期:

SELECT agency_id 
FROM  lessons 
GROUP BY agency_id 
ORDER BY MAX(start_at) DESC 
LIMIT 10