MySQL - 加入一个查询

时间:2017-04-06 14:38:50

标签: mysql sql

我有两张桌子:

引线

|lead_id|name|
|      1|   a|
|      2|   b|
|      3|   c|
lead_phases
|phase_id|phase_lead_fk|phase_sort|phase_status|
|       1|            1|         1|           1|
|       2|            1|         2|           0|
|       3|            2|         3|           1|
|       4|            2|         1|           0|
|       5|            2|         2|           0|
|       6|            3|         1|           0|
|       7|            3|         2|           1|

我必须编写一个查询,显示按lead_id分组的连接表和列phase_sort的最高值。

我希望收到的结果:

|lead_id|name|phase_id|phase_sort|phase_status|
|      1|   a|       2|         2|           0|
|      2|   b|       3|         3|           1|
|      3|   c|       7|         7|           1|

我的查询:

SELECT phase_id,phase_lead_fk,phase_sort,phase_status
FROM leads
LEFT JOIN lead_phases ON lead_id=phase_lead_fk
GROUP BY lead_id 

1 个答案:

答案 0 :(得分:0)

您需要分两步完成此操作

select  phase_lead_fk, max(phase_sort)
from    lead_phases
group by phase_lead_fk

这将返回每个潜在客户的高峰排序值;然后,您可以将此结果用作过滤器,方法是将其与两个原始表

连接
select  *
from    leads t1
join    lead_phases t2
on      t1.lead_id = t2.phase_lead_fk
join    (
            select  phase_lead_fk, max(phase_sort) max_phase_sort
            from    lead_phases
            group by phase_lead_fk
        ) t3
on      t2.phase_lead_fk = t3.phase_lead_fk and
        t2.phase_sort = t3.max_phase_sort