[英]mysql subquery inside a LEFT JOIN
我有一個查詢需要來自名為tbl_emails_sent
的輔助表中的最新記錄。
該表包含發送給客戶的所有電子郵件。 大多數客戶都有幾百到幾百封電子郵件。 我想拉一個顯示最新的查詢。
例:
SELECT c.name, c.email, e.datesent
FROM `tbl_customers` c
LEFT JOIN `tbl_emails_sent` e ON c.customerid = e.customerid
我猜測使用子查詢的LEFT JOIN,但我沒有深入研究子查詢。 我正朝着正確的方向前進嗎?
目前上面的查詢未針對指定表中的最新記錄進行優化,因此我需要一些幫助。
它應該是這樣的,您需要有一個單獨的查詢來獲取發送電子郵件的最大日期(或最新日期)。
SELECT a.*, b.*
FROM tbl_customers a
INNER JOIN tbl_emails_sent b
ON a.customerid = b.customerid
INNER JOIN
(
SELECT customerid, MAX(datesent) maxSent
FROM tbl_emails_sent
GROUP BY customerid
) c ON c.customerid = b.customerid AND
c.maxSent = b.datesent
這不行嗎?
SELECT t1.datesent,t1.customerid,t2.email,t2.name
FROM
(SELECT max(datesent) AS datesent,customerid
FROM `tbl_emails_sent`
) as t1
INNER JOIN `tbl_customers` as t2
ON t1.customerid=t2.customerid
如果只有兩個日期是相同的,那么只有你有的問題是,選擇一個的決定因素是什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.