加入最后一条记录

问题描述 投票:0回答:2

我有这个mysql语句

SELECT `leads`.*,
     `lead_notes`.`lead_id`,
     `lead_notes`.`status`
  FROM `leads`
     LEFT JOIN `lead_notes` ON `leads`.`id` = `lead_notes`.`lead_id`
          WHERE `leads`.`pixel` IN (".implode(',', array_map('add_quotes', $my_pixels)).")
              AND `lead_notes`.`status`='4' 

但我只想加入lead_notes中的最后一条记录。 谢谢你

好的,我的问题不清楚,我再试一次 我想从最后一个 Lead_notes 状态等于 x 的线索中获取所有记录

我有两张桌子

---table leads---           ---table lead_notes---
id  pixel   date            id  lead_id     status  date
1   uuid1   unixtime        1   5           1       unixtime
2   uuid1   unixtime        2   4           0       unixtime
3   uuid2   unixtime        3   3           2       unixtime
4   uuid1   unixtime        4   2           4       unixtime
5   uuid3   unixtime        5   1           2       unixtime
                            6   2           2       unixtime
                            7   4           4       unixtime
                            8   5           2       unixtime
                            9   1           1       unixtime
                            10  3           2       unixtime

我想在最新的一个上将 Lead 与 Lead_notes 一起加入(该 id 与 Lead_id 匹配) 如果状态等于 x

则选择它
php sql mysql greatest-n-per-group
2个回答
0
投票

既然您已经澄清了:您根本不必加入。您想要最后状态等于给定值(例如 4)的潜在客户。所以这属于 WHERE 子句。使用 ORDER BY 和 LIMIT 获取潜在客户的最后记录。

select *
from leads
where
(
  select lead_notes.status
  from lead_notes 
  where lead_notes.lead_id = leads.id
  order by lead_notes.note_date desc
  limit 1
) = '4';

-1
投票
dec @row int=0 


 SELECT `leads`.*,
 `lead_notes`.`lead_id`,
 `lead_notes`.`status`
 FROM `leads`
 LEFT JOIN `lead_notes` ON `leads`.`id` =select max(a) from (select @row=@row+1 as a from `lead_notes')
  WHERE `leads`.`pixel` IN (".implode(',', array_map('add_quotes', $my_pixels)).")
  AND `lead_notes`.`status`='4' 
© www.soinside.com 2019 - 2024. All rights reserved.