对父-父查询的第二个子查询引用:找不到列

Second Subquery reference to parent-parent query: column not found

引用外部列正在处理的子查询是否有限制?

我试过这个查询:

SELECT
    `userouter`.`id` AS `user_id`
FROM
    `users` AS `userouter`
WHERE
    123456 = (
        SELECT
            SUM(`tmp`.`sum`) AS `sum_total`
        FROM
            (
                SELECT
                    SUM(`invoiceposition`.`number` * `invoiceposition`.`amount`) AS `sum`
                FROM
                    `invoices` AS `invoice` INNER JOIN
                    `invoicepositions` AS `invoiceposition` ON
                        `invoice`.`id` = `invoiceposition`.`invoice`
                WHERE
                    `invoice`.`user` = `userouter`.`id`
                GROUP BY
                    `invoice`.`id`
            ) AS `tmp`
    )
GROUP BY
    `userouter`.`id`

然后我得到 Error Code: 1054. Unknown column 'userouter.id' in 'where clause'

如何在子子查询中引用 userouter.id

去除双重嵌套。

SELECT
    `userouter`.`id` AS `user_id`
FROM
    `users` AS `userouter`
LEFT JOIN (
                SELECT
                    `invoice`.`user` as `user_id`, SUM(`invoiceposition`.`number` * `invoiceposition`.`amount`) AS `sum`
                FROM
                    `invoices` AS `invoice` INNER JOIN
                    `invoicepositions` AS `invoiceposition` ON
                        `invoice`.`id` = `invoiceposition`.`invoice`
                WHERE
                    `invoice`.`user` = `userouter`.`id`
                GROUP BY
                    `invoice`.`id`
            ) AS `tmp`
ON `tmp`.`user_id` = `userouter`.`id`
WHERE
    123456 = `userouter`.`id`
GROUP BY
    `userouter`.`id`

因为似乎无法以正常方式解决问题(对外部查询的双重嵌套子查询引用),我现在通过创建一个 mysql 以用户 ID 作为参数的函数解决了这个问题。

希望这对其他搜索者有所帮助