jiangjunpingguo 2024-05-11 16:40 采纳率: 42.9%
浏览 3

mysql8中一个表关联的sql报错

以下sql:

 select
    ivt.VIN as CARNO,
    fnc.LOAN_BAT_NUM as SCFTXNO,
    stg.STG_CODE as OUTHWCODE,
    ioc.FNC_EXP_DT as FNCEXPDT
from
    COFP.T_CC_AGRM_INF agrm
left join COFP.T_CC_IVT_INF ivt on
    agrm.SBDT_AGRM_ID = ivt.SBDT_AGRM_ID
left join COFP.T_CC_STG_INF stg on
    ivt.STG_CODE = stg.STG_CODE
left join COFP.T_CC_PLG_FNC_REL fnc on
    ivt.VIN = fnc.VIN
    and fnc.REL_IS_EFF = '1'
left join T_CC_INSTK_APLY_DTL idl on
    ivt.VIN = idl.VIN,
    COFP.T_CC_REG_AGRM reg
left join COFP.T_CC_REG_AGRM_REL rel on
    reg.REG_AGRM_ID = rel.REG_AGRM_ID
left join COFP.T_IOU ioc on
    ioc.FNC_ID = fnc.FNC_ID
where
    agrm.SBDT_AGRM_ID = ivt.SBDT_AGRM_ID
    and agrm.SBDT_AGRM_ID = rel.SBDT_AGRM_ID
    and agrm.AGRM_CTR_STAT = 0
    and reg.AGRM_STAT = 1
    and ivt.VHCL_PRC_CFRM_STAT = 1
    and idl.VHCL_STAT = '1'
    and reg.REG_ENTP_ID = '#{REG_ID}'
    and agrm.SBDT_AGRM_ID = '#{AGTID}'

在mysql8数据库中执行后报错:Unknown column 'fnc.FNC_ID' in 'on clause',请问什么原因呢?需要怎么修改sql呢?

  • 写回答

3条回答 默认 最新

  • 笑面虎 2024-05-11 16:40
    关注

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


    【您想要解决的问题】:您提问的目的是解决在MySQL 8数据库中执行一个包含多个表关联的SQL查询时遇到的“Unknown column 'fnc.FNC_ID' in 'on clause”错误。

    【问题出现原因】:错误信息表明在SQL查询的ON子句中引用了一个不存在的列fnc.FNC_ID。这可能是因为:

    1. 列名拼写错误或不存在。
    2. T_CC_PLG_FNC_REL中确实没有这个列。
    3. SQL查询中的表别名使用不正确,导致引用了错误的表别名。

    【问题解决方案】:为了解决这个问题,您需要检查以下几点:

    1. 确认T_CC_PLG_FNC_REL表中是否存在列FNC_ID
    2. 如果列存在,检查是否有拼写错误。
    3. 检查是否正确地使用了表别名,特别是在多表关联的情况下。

    【提供代码】:由于问题可能出在表结构或者别名使用上,以下是一些可能的修改建议,但需要您根据实际的表结构和列名进行调整:

    -- 假设列名和表别名使用没有问题,您可能需要调整的是JOIN语句的顺序或者方式
    SELECT
        ivt.VIN as CARNO,
        fnc.LOAN_BAT_NUM as SCFTXNO,
        stg.STG_CODE as OUTHWCODE,
        ioc.FNC_EXP_DT as FNCEXPDT
    FROM
        COFP.T_CC_AGRM_INF agrm
    LEFT JOIN COFP.T_CC_IVT_INF ivt ON agrm.SBDT_AGRM_ID = ivt.SBDT_AGRM_ID
    LEFT JOIN COFP.T_CC_STG_INF stg ON ivt.STG_CODE = stg.STG_CODE
    LEFT JOIN COFP.T_CC_PLG_FNC_REL fnc ON ivt.VIN = fnc.VIN AND fnc.REL_IS_EFF = '1'
    -- 确保T_CC_INSTK_APLY_DTL表的别名使用正确,并且该表确实需要在这个查询中
    LEFT JOIN T_CC_INSTK_APLY_DTL idl ON ivt.VIN = idl.VIN
    LEFT JOIN COFP.T_CC_REG_AGRM reg ON reg.REG_AGRM_ID = agrm.REG_AGRM_ID
    LEFT JOIN COFP.T_CC_REG_AGRM_REL rel ON reg.REG_AGRM_ID = rel.REG_AGRM_ID
    LEFT JOIN COFP.T_IOU ioc ON ioc.FNC_ID = fnc.FNC_ID -- 确保使用了正确的别名
    WHERE
        agrm.AGRM_CTR_STAT = 0
        AND reg.AGRM_STAT = 1
        AND ivt.VHCL_PRC_CFRM_STAT = 1
        AND idl.VHCL_STAT = '1'
        AND reg.REG_ENTP_ID = '#{REG_ID}'
        AND agrm.SBDT_AGRM_ID = '#{AGTID}';
    

    【代码运行方式】:您需要在MySQL客户端或者通过任何支持MySQL的数据库管理工具运行上述SQL查询。

    【代码预期运行结果】:如果修改正确,SQL查询应该能够成功执行,并且返回预期的结果集。

    【推荐相关链接】:

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 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文件报错