我有两张桌子:
引线
|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
答案 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