简体   繁体   English

连接两个表并在MySql中更新第三个表

[英]Join two tables and update third table in MySql

I am trying to join two tables tblN1 and tblN2 to get the number of total access for user and update the third table tblNCC without success because I have error: 我试图加入两个表tblN1tblN2来获取用户的总访问次数,并更新第三个表tblNCC而不成功,因为我tblNCC错误:

[Err] 1054 - Unknown column 't.UserN1' in 'on clause'

I don't understand this error ... the column t.UserN1 is in Select sql query. 我不理解此错误... t.UserN1列在“选择sql查询”中。

Maybe the problem is the Union All syntax ? 也许问题是Union All语法?

My code below, please help me. 我下面的代码,请帮助我。

Thank you so much in advance. 提前非常感谢您。

UPDATE tblNCC AS CC
JOIN (
    SELECT
        sum(total) AS Total
    FROM
        (
            SELECT
                COUNT(*) AS Total,
                UserN1
            FROM
                `tblN1`
            WHERE
                UserN1 IN ('7047505')
            AND dateN1 BETWEEN MAKEDATE(YEAR(CURDATE()), 1)
            AND CURDATE()
            UNION ALL
                SELECT
                    COUNT(*) AS Total,
                    UserN2
                FROM
                    `tblN2`
                WHERE
                    UserN2 ('7047505')
                AND dateN2 BETWEEN MAKEDATE(YEAR(CURDATE()), 1)
                AND CURDATE()
        ) AS t
) AS q ON t.UserN1 = CC.UserNcc
SET CC.Total = t.Total;
[Err] 1054 - Unknown column 't.UserN1' in 'on clause'

t is not in the scope. t不在范围内。 it's inside q . q里面。

You probably mean something like this: 您可能的意思是这样的:

UPDATE tblNCC AS CC
JOIN (
    SELECT
        username,
        sum(total) AS Total
    FROM
        (
            SELECT
                COUNT(*) AS Total,
                UserN1 as username
            FROM
                `tblN1`
            WHERE
                UserN1 IN ('7047505')
            AND dateN1 BETWEEN MAKEDATE(YEAR(CURDATE()), 1)
            AND CURDATE()
            UNION ALL
                SELECT
                    COUNT(*) AS Total,
                    UserN2 as username
                FROM
                    `tblN2`
                WHERE
                    UserN2 ('7047505')
                AND dateN2 BETWEEN MAKEDATE(YEAR(CURDATE()), 1)
                AND CURDATE()
        ) AS t
) AS q ON q.username = CC.UserNcc
SET CC.Total = q.Total;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM