簡體   English   中英

在mysql中以最新日期加入行

[英]joining row with most recent date in mysql

我是mysql的新手,已經嘗試使它正常運行。 我正在加入3個表,並且我嘗試將第三個表與該日期最新記錄的行合並。 這是我的mysql查詢

SELECT mg.region_name, mu.contact_person, 
    mu.contact_number, mu.status, mu.company_name, mu.user_type, MAX(mf.follow_up_date), mf.date, mu.user_id
FROM p1006_marketing_group as mg 
JOIN p1006_marketing_users as mu ON mg.id = mu.region_id 
JOIN ( SELECT user_id_fk,MAX(follow_up_date) 
        FROM p1006_marketing_follow_up ) as mf 
    ON mu.user_id = mf.user_id_fk 
    WHERE mu.user_id_done = "" AND ( mg.id = 3 OR mg.id = 7 OR mg.id = 6 ) 
GROUP BY mf.user_id_fk

我收到以下錯誤

“字段列表”中的未知列“ mf.follow_up_date”

我真的很困惑,因為我必須將follow_up_date列。

我將非常感激任何可能的幫助

您忘了在子查詢中給MAX(follow_up_date)做個別名

編輯查詢,使其看起來像:

MAX(follow_up_date) as follow_up_date

另請注意,您的查詢還有其他問題,例如選擇列表包含約8列,這些列不是聚合函數的一部分,但您的分組依據僅列出一列。 盡管這可能在MySQL中有效,因為它可以(如果配置了)為您填寫缺少的分組字段,但是您應該養成指定它們的習慣,以避免將來在使用不同數據庫系統的其他工作中遇到問題

您缺少MAX列的別名。

SELECT 
  mg.region_name, mu.contact_person, mu.contact_number, mu.status, 
  mu.company_name, mu.user_type, MAX(mf.follow_up_date), mf.date, mu.user_id

FROM p1006_marketing_group as mg 
JOIN p1006_marketing_users as mu ON mg.id = mu.region_id 
JOIN ( SELECT user_id_fk,MAX(follow_up_date) 'follow_up_date' FROM p1006_marketing_follow_up ) as mf ON mu.user_id = mf.user_id_fk 
WHERE mu.user_id_done = "" AND ( mg.id = 3 OR mg.id = 7 OR mg.id = 6 ) 
GROUP BY mf.user_id_fk

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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