我是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。
我会对任何可能的帮助非常致命
答案 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