【问题标题】:Using JOINs and group by together in single sql query在单个 sql 查询中一起使用 JOIN 和 group by
【发布时间】:2012-11-25 14:21:25
【问题描述】:

我无法同时使用 JOINS 和 group-by: 我搜索了这个...但我没有找到解决方案..问题如下:

我有两个表,第一个是main_table,字段为eidnamestatus

第二个表是字段fideidlast_dateremarksnext_date 的跟进

第二张表用于存储客户的后续详细信息(客户详细信息存储在 main_table 中),我想获取每个客户的最后一次跟进记录,其中包含选定的日期时间段(从_日期到到_日期),并按 next_date 降序排序。

我使用了下面的查询,但没有工作

SELECT * 
FROM main_table as MT 
JOIN followups as MF on MT.eid=MF.eid 
WHERE MT.status='open' AND MF.NDate<='2012-12-07' 
GROUP BY MF.eid 
ORDER BY MF.next_date DESC

提前谢谢...伙计们

【问题讨论】:

    标签: mysql select join group-by


    【解决方案1】:

    试试这个

    SELECT * FROM main_table AS MT 
    LEFT JOIN (SELECT * FROM (SELECT * FROM followups ORDER BY next_date DESC) AS A GROUP BY eid) AS MF ON MT.eid=MF.eid 
    WHERE MT.status='open' 
    AND MF.NDate<='2012-12-07';
    

    【讨论】:

      【解决方案2】:

      你可以试试这样的:

      select m.eid,
        m.name,
        m.status,
        f1.last_date,
        f1.remarks,
        f1.next_date
      from maintable m
      left join
      (
        select max(last_date) maxLast, eid
        from followups
        where last_date between from_date and to_date
        group by eid
      ) f
        on m.eid = f.eid
      left join followups f1
        on f.maxLast = f1.last_date
        and f.eid = f1.eid
      where m.status='open'
        and f1.next_date<='2012-12-07'
      order by f1.next_date desc
      

      【讨论】:

        【解决方案3】:

        试试这个:

        SELECT * FROM main_table AS MT 
        LEFT JOIN (SELECT * FROM (SELECT * FROM followups WHERE NDate<='2012-12-07' ORDER BY next_date DESC) AS A GROUP BY eid) AS MF ON MT.eid=MF.eid 
        WHERE MT.status='open';
        

        【讨论】:

          猜你喜欢
          • 2013-02-09
          • 2016-07-17
          • 1970-01-01
          • 2021-02-20
          • 2017-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多