zoukankan      html  css  js  c++  java
  • join的一对多,去除重复,排序优先的group方法

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

    用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的。

  • 相关阅读:
    洛谷P1170 兔八哥与猎人 欧拉函数的应用
    洛谷P1056 排座椅
    洛谷P1177 【模板】快速排序
    洛谷1059 明明的随机数
    洛谷P1372 又是毕业季I
    洛谷P1042 乒乓球
    洛谷P1086 花生采摘
    洛谷P1031 均分纸牌
    洛谷P1068 分数线划定
    洛谷P1781 宇宙总统
  • 原文地址:https://www.cnblogs.com/luowei/p/4758710.html
Copyright © 2011-2022 走看看