Unknown column 'xx' in 'on clause'

本文记录了一次解决MySQL中出现的“Unknown column 'sign.userid' in 'on clause'”错误的过程,通过调整SQL语句中的子查询部分并给userid加上单引号解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在调试代码时发现一个项目历史遗留问题,
老是报Unknown column ‘sign.userid’ in ‘on clause’错误
然后我就将sql语句放入数据库可视化工具中,
发现还是这个错误。
然后就是一顿百度
百度搜索到的问题原因都是:
MySQL5.0 Bug, 要把联合的表用括号包含起来才行:

Sql代码
SELECT (c.id, a.id, b.id) FROM A a, B b LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id
这句话执行应该是没有错误的,但是Mysql 5 下执行则会出错。

因为mysql下有这样一个BUG,要把联合的表用括号包含起来才行:

Sql代码
SELECT (c.id, a.id, b.id) FROM (A a, B b) LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id 。

但发现完全不是这个原因
我粘下我代码

    SELECT
    c. NAME AS companyname,
    ifnull(o. NAME, '暂无部门') AS deptname,
    ifnull(u. NAME, '暂无人员') AS NAME,
    ifnull(signp, 0) AS signp,

    u.id,


    c.id AS companyid
FROM
    sys_user u
LEFT JOIN sys_office o ON u.office_id = o.id
RIGHT JOIN sys_office c ON u.company_id = c.id
LEFT JOIN (
    SELECT
        point_record.userid,
        SUM(point_record.point) AS signp,
        any_value(point_record.createdate)
    FROM
        point_record
    WHERE
        point_record.source = 'user_sign'
    AND date_format(createdate, '%Y-%m-%d') = date_format(
        '2013-05-27','%Y-%m-%d')
        AND (
            point_record.delflag IS NULL
            OR point_record.delflag != '1'
        )
        GROUP BY
            point_record.userid
    )AS SIGN ON u.id = sign.userid

我的报错是
[Err] 1054 - Unknown column ‘sign.userid’ in ‘on clause’

然后在各种尝试后发现给sign.userid加上单引号,错误消失,至于原因我也不懂,望哪位大神看到给解释下
下是我该过后代码

    SELECT
    c. NAME AS companyname,
    ifnull(o. NAME, '暂无部门') AS deptname,
    ifnull(u. NAME, '暂无人员') AS NAME,
    ifnull(signp, 0) AS signp,

    u.id,


    c.id AS companyid
FROM
    sys_user u
LEFT JOIN sys_office o ON u.office_id = o.id
RIGHT JOIN sys_office c ON u.company_id = c.id
LEFT JOIN (
    SELECT
        point_record.userid,
        SUM(point_record.point) AS signp,
        any_value(point_record.createdate)
    FROM
        point_record
    WHERE
        point_record.source = 'user_sign'
    AND date_format(createdate, '%Y-%m-%d') = date_format(
        '2013-05-27','%Y-%m-%d')
        AND (
            point_record.delflag IS NULL
            OR point_record.delflag != '1'
        )
        GROUP BY
            point_record.userid
    )AS SIGN ON u.id = 'sign.userid'
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值