Possible Duplicate:
Retrieving the latest note (by timestamp) in a single query from a 1:n table
您好,不知道我应该在这里做什么,因为从来没有必要进行这样的查询。
我需要做的是将名为 _notes 的表与 _leads 连接起来,
每个客户端都有一个唯一的引用,并且他们在 _notes 表中有多个注释。
我想要做的是生成一个查询,该查询将显示 _leads 中的所有字段以及每个客户的最新注释。
到目前为止我所拥有的是,
SELECT
_leads.ID,
_leads.Title,
_leads.Firstname,
_leads.Lastname
_notes.Note,
_notes.`Date`
FROM
_leads
Left Join _notes ON _leads.ID = _notes.Lead_ID
GROUP BY _leads.ID
这仅显示每个客户的第一个注释, 有没有办法让查询执行我想要的操作。
最佳答案
子查询是我解决此类困难的常用解决方案
SELECT
_leads.ID,
_leads.Title,
_leads.Firstname,
_leads.Lastname,
n.Note,
n.`Date`
FROM _leads
LEFT JOIN (
SELECT
_notes.Lead_ID,
_notes.Note,
_notes.`Date`
FROM _notes
ORDER BY `Date` DESC
) AS n
ON _leads.ID = n.Lead_ID
GROUP BY _leads.id
如果您的 _notes 表也有一个 ID 字段,那么下面的内容也可能很有用,并且使用子查询返回与每个潜在客户关联的最高 ID,然后根据该字段将 _notes 整体连接起来会稍微干净一些
SELECT
l.ID,
l.Title,
l.Firstname,
l.Lastname,
_notes.Note,
_notes.`Date`
FROM (
SELECT
_leads.ID,
_leads.Title,
_leads.Firstname,
_leads.Lastname,
MAX(_notes.ID) AS Note_ID
FROM _leads
LEFT JOIN _notes
ON _notes.Lead_ID = _leads.ID
GROUP BY _leads.ID
) AS l
LEFT JOIN _notes
ON _notes.ID = l.Note_ID
关于php - 需要帮助尝试在 SQL 查询中提取每个客户端 ID 的最新注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9397381/