jiangjunpingguo 2024-05-11 11:04 采纳率: 42.9%
浏览 7
已结题

mysql表关联可以将逗号和join混用吗?

以下sql:

        SELECT
        RCV.FNC_APLY_CUST_ID AS custId,
        mgmt.num AS num,
        AGRM.AGRM_PARM as agrmParm
        FROM COFP.T_FNC_APLY_RCV rcv ,
        (SELECT FNC_APLY_ID,SUM(NBRPCKS) num FROM  COFP.T_WH_WHRECPT_MGMT_CMDTY   WHERE STAT = '1' GROUP BY FNC_APLY_ID) mgmt
        LEFT JOIN T_COMMD_BSN_AGRM agrm ON rcv.AGRM_ID = AGRM.AGRM_ID
        where rcv.stat = '1' and mgmt.FNC_APLY_ID = rcv.FNC_APLY_ID 

在mysql8上会报错:Unknown column 'rcv.AGRM_ID' in 'on clause',请问为什么?应该怎么改写呢?mysql8中表关联可以像上面这样把逗号和join混用吗?

  • 写回答

3条回答 默认 最新

  • 笑面虎 2024-05-11 11:04
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    【您想要解决的问题】:您想要解决的问题是在MySQL 8中执行SQL查询时遇到的“Unknown column 'rdv.AGRM_ID' in 'on clause”错误,并询问是否可以在MySQL 8中使用逗号和JOIN混用来进行表关联。

    【问题出现原因】:在您的SQL语句中,您尝试使用旧的MySQL语法,即通过在FROM子句中直接列出表名并使用逗号分隔它们,同时使用LEFT JOIN来连接另一个表。在MySQL 5.7之前的版本中,这是可以接受的,但是在MySQL 8中,这种混用方式不再被支持。错误信息表明,MySQL无法识别'rdv.AGRM_ID',这可能是因为在LEFT JOIN子句中引用了错误的别名。

    【问题解决方案】:为了解决这个问题,您应该使用明确的JOIN语法来代替旧的逗号分隔语法。同时,确保在JOIN子句中使用的别名与实际的表别名相匹配。

    【提供代码】:以下是修改后的SQL查询代码:

    SELECT
        RCV.FNC_APLY_CUST_ID AS custId,
        mgmt.num AS num,
        AGRM.AGRM_PARM as agrmParm
    FROM COFP.T_FNC_APLY_RCV RCV
    JOIN (
        SELECT FNC_APLY_ID, SUM(NBRPCKS) AS num
        FROM COFP.T_WH_WHRECPT_MGMT_CMDTY
        WHERE STAT = '1'
        GROUP BY FNC_APLY_ID
    ) mgmt ON mgmt.FNC_APLY_ID = RCV.FNC_APLY_ID
    LEFT JOIN T_COMMD_BSN_AGRM AGRM ON RCV.AGRM_ID = AGRM.AGRM_ID
    WHERE RCV.stat = '1';
    

    【代码运行方式】:您需要在MySQL 8的数据库环境中运行此查询。这可以通过命令行、MySQL工作台或任何支持MySQL 8的数据库管理工具来完成。

    【代码预期运行结果】:如果查询成功执行,您将获得一个包含custIdnumagrmParm列的结果集,其中numFNC_APLY_ID的聚合值,且所有记录的stat字段都为'1'。

    【推荐相关链接】:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月18日
  • 已采纳回答 8月10日
  • 修改了问题 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 Hadoop的部署与安装的一些疑问
  • ¥15 短剧的sdk在哪里接入
  • ¥30 智能割草机自动化割草
  • ¥15 求:可不可以提供一些 在国内可以用,低代码不要太难 在电脑上可以下载的 制作app的软件
  • ¥60 找人回答kibana8.14.3二次集成开发,自定义插件ui导航栏如何设置
  • ¥15 fluke高精度万用表8845A型号测交流电压一直跳动,且去掉输入后显示不归零
  • ¥15 不同模型怎么用同一个shader
  • ¥15 安卓启动没有ais proxy与v4l2的log打印
  • ¥15 go怎么读取mdb文件里面的数据
  • ¥60 Matlab联合CRUISE仿真编译dll文件报错