在mysql中加入最近日期的行

时间:2017-09-08 06:19:56

标签: php mysql sql

我是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。

我会对任何可能的帮助非常致命

2 个答案:

答案 0 :(得分:1)

您忘记在子查询中添加MAX(follow_up_date),别名

编辑您的查询,使其如下所示:

MAX(follow_up_date) as follow_up_date

请注意,您的查询还有其他问题,例如包含大约8列不属于聚合函数的选择列表,但您的组只列出一列。虽然这可能在MySQL中有用,因为它可以(如果配置的话)为你填写缺少的列,你应该养成指定它们的习惯,以避免在使用不同数据库系统的其他工作中的未来问题

答案 1 :(得分:1)

您缺少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