Mysql 在左联接中嵌套SELECT MAX时出现SQL错误#1064

Mysql 在左联接中嵌套SELECT MAX时出现SQL错误#1064,mysql,phpmyadmin,Mysql,Phpmyadmin,请让我知道为什么我在以下SQL(我使用的是MySQL数据库)上出现错误,以及如何更正错误: SELECT at_award_description.ad_id, at_award_description.ad_detail, at_award_description.ad_archived_date, a.cad_id, a.cad_task_completion_date FROM at_award_description LEFT JOIN at_cub_aw

请让我知道为什么我在以下SQL(我使用的是MySQL数据库)上出现错误,以及如何更正错误:

SELECT at_award_description.ad_id,
    at_award_description.ad_detail,
    at_award_description.ad_archived_date,
    a.cad_id,
    a.cad_task_completion_date
FROM at_award_description
LEFT JOIN at_cub_award_date AS a ON ((at_award_description.ad_id = a.ad_id)
    AND (a.ca_id = 37)
    AND a.cad_task_completion_date = (SELECT MAX(b.cad_task_completion_date)
                                      FROM at_cub_award_date AS b
                                      WHERE a.ca_id = b.ca_id AND a.ad_id = b.ad_id
                                     )
)
WHERE at_award_description.aw_id = 5
ORDER BY at_award_description.ad_order;
我将SQL分解以确保每个部分都正常工作

SELECT MAX(b.cad_task_completion_date)
FROM at_cub_award_date AS b

每一个都是独立工作的。当我将它们组合在一起时,会出现以下错误: 错误 SQL查询: 限制0,25 MySQL说: #1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“LIMIT 0,25”附近要使用的正确语法

问候,

格林

编辑 @Barmar提出了在测试结束时去除“;”的解决方案。然而,结果并非我所期望的,因此我最终将其更改为:

SELECT at_award_description.ad_id, 
               at_award_description.aw_id, 
               at_award_description.ad_group, 
               at_award_description.ad_detail, 
               at_award_description.ad_start_date, 
               at_award_description.ad_archived_date,
    MAX(at_cub_award_date.cad_task_completion_date)
FROM at_award_description
LEFT JOIN at_cub_award_date ON ((at_award_description.ad_id = at_cub_award_date.ad_id)
    AND (at_cub_award_date.ca_id = 37))
WHERE at_award_description.aw_id = 5
GROUP BY at_award_description.ad_group
ORDER BY at_award_description.ad_order, at_award_description.ad_group

消息显示错误接近
极限0,25
。我在你的任何查询中都看不到这一点。嗨@Barmar,我的SQL中没有“limit0,25”,所以我认为这必须生成。关于这一点,Glyn.MySQL并不是自己生成的。你能做一个sqlfiddle来演示这个问题吗?嗨@Barmar,对不起,我不理解你的要求。我在这里粘贴的代码正是我在MySQL中使用phpMyAdmin运行的代码。你好,格林。啊,你在问题中没有提到
phpMyAdmin
。很明显,它添加了该选项以限制显示的行数。尝试删除
在查询的末尾。
SELECT at_award_description.ad_id, 
               at_award_description.aw_id, 
               at_award_description.ad_group, 
               at_award_description.ad_detail, 
               at_award_description.ad_start_date, 
               at_award_description.ad_archived_date,
    MAX(at_cub_award_date.cad_task_completion_date)
FROM at_award_description
LEFT JOIN at_cub_award_date ON ((at_award_description.ad_id = at_cub_award_date.ad_id)
    AND (at_cub_award_date.ca_id = 37))
WHERE at_award_description.aw_id = 5
GROUP BY at_award_description.ad_group
ORDER BY at_award_description.ad_order, at_award_description.ad_group