首页 > 技术文章 > join的一对多,去除重复,排序优先的group方法

luowei 2015-08-25 21:19 原文

想将问题列表按照最新回答来排列。但问题和回答是分拆在两张表来存放的。
所以,要完成上述需求,需从主表“问题”取显示数据,但是得按照次表(回答)的更新日期来排序。

用join来做,始终无法去除重复,
折腾了两天,最后还是必须得用groupby(影响性能的东东)。


 

去除了重复,但是排序又不正确。   

   MySQL对语句的处理方式是: 先群组,群组后再排序,但是我现在想排序后再群组该如何解决呢?

$sql = "SELECT ask.* FROM ly_ask JOIN `answer` ON ask.id=answer.`aid` GROUP BY answer.aid ORDER BY max(answer.dateline) DESC LIMIT 15;";


SELECT ly_ask.* FROM ask, `answer` WHERE ask.id=answer.`aid` GROUP BY answer.aid ORDER BY max(answer.dateline) DESC LIMIT 15;

 

关于from多表 和 join 性能:

执行时的区别不大,但join能比较清楚告诉阅读者是哪些表进行了关联,以及关联的字段是什么。where就要读者自己去看了。

对于SQL解释器就差别不大了。

但是SQL规格推荐是用join的。

推荐阅读