簡體   English   中英

LEFT JOIN里面的mysql子查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM