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

  • 相关阅读:
    Repeatable Read
    Read Committed
    Read Uncommitted
    sql 事务
    实用sql语句
    管理mysql
    mysql
    sql delete语句
    sql update语句
    sql INSERT语句
  • 原文地址:https://www.cnblogs.com/luowei/p/4758710.html
Copyright © 2011-2022 走看看