我有这个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
我想在最新的一个(与id匹配lead_id)的lead_notes上加入lead 如果状态等于x
,请选择它答案 0 :(得分: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 :(得分:-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'