小编Tam*_*Tam的帖子

将值传递给嵌套子查询

我有以下查询(为简洁起见已删除),其目的是创建w8用于对结果进行排序的值:

SELECT elements.id, [ ... ],
(SELECT 
    COALESCE(craft_w8_a.weight, 0) + COALESCE(SUM(craft_w8_b.weight), 0) 
    FROM `craft_w8` `craft_w8_a`
    LEFT JOIN `craft_w8` `craft_w8_b` 
        ON craft_w8_b.elementId
        IN ( SELECT targetId FROM `craft_relations`
                WHERE fieldId IN (15, 16)
                  AND sourceId = elements.id)
    WHERE craft_w8_a.elementId = elements.id
) as w8
FROM `craft_elements` `elements`
[ ... ]
GROUP BY `elements`.`id`
ORDER BY `w8` DESC, `name` ASC LIMIT 100
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是第二个嵌套子查询(左连接中的那个)无法elements.id从初始选择中找到该列。

从我发现在 SQL 中搜索只传递一级深度的值,我一直无法找到合适的解决方法。

是否可以强制 SQL 传递比一级更深的值?或者有没有办法修改查询以不使用另一个子查询,但仍然得到相同的结果?

对不起,如果我做任何愚蠢的事情或遗漏了任何明显的东西,SQL 不是我的强项!

mysql subquery

6
推荐指数
1
解决办法
3万
查看次数

标签 统计

mysql ×1

subquery ×1