[英]Select Last Record from LEFT JOIN Subquery
我正在玩子查询,我需要在LEFT JOIN
显示一个customers_notes
表中的最新笔记。 我尝试的查询返回错误。 我在下面做什么错了?
SELECT c.*, n.datesubmitted
FROM `customers` c
LEFT JOIN (SELECT datesubmitted FROM `customers_notes`
ORDER BY datesubmitted DESC LIMIT 1) AS n
ON (c.customerid = n.customerid)
我得到的错误是: #1054-'on子句'中的未知列'n.customerid'
首先,您缺少在子查询中选择的customerid
作为字段-这就是为什么会出现错误的原因。
其次,即使您添加了它,也不会获得想要的结果。
我假设您有一个客户,一个客户可以附加多个注释,而您想获取该客户的详细信息以及他最近的注释的所有详细信息。
解决此类问题的一般方法是:
在子查询中找到max()
日期,如下所示:
select customerid, max(datesubmitted)
from customer_notes
group by customerid
然后在外部查询中加入这些结果
select c.*, n.*
from customers c
left join customer_notes n
on c.customer_id = n.customer_id
left join (
select customerid, max(datesubmitted)
from customer_notes
group by customerid ) nn
on n.datesubmitted = nn.datesubmitted
要在ON
子句中使用n.customerid
,必须首先SELECT
它:
SELECT c.*, n.datesubmitted
FROM `customers` c
LEFT JOIN (SELECT datesubmitted, customerid FROM `customers_notes`
ORDER BY datesubmitted DESC LIMIT 1) AS n
ON (c.customerid = n.customerid)
您缺少要加入的必填列。 在左联接查询列名称customerid丢失。
请参考以下查询
SELECT c.*, n.datesubmitted
FROM `customers` c
LEFT JOIN (SELECT customerid,datesubmitted FROM `customers_notes`
ORDER BY datesubmitted DESC LIMIT 1) AS n
ON (c.customerid = n.customerid)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.