sql查询中where子句的值是select的父列

时间:2016-12-16 07:46:58

标签: mysql

我有一个如下查询。如图所示,它有一个子查询。我想要的是使where子句的值应该基于s1.id。目前我将其设为静态2,因为我已尝试where s2.id = s1.id并且它无效:

SELECT 
s1.id,
s1.code,
(SELECT 
        c.company_name
    FROM
        company c
            INNER JOIN
        (SELECT 
            a.company_id
        FROM
            agent a
        INNER JOIN shop s2 ON a.id = s2.agent_id
        WHERE
            s2.id = 2) AS agent_shop ON agent_shop.company_id = c.id) AS agent_company_name
FROM
     shop s1

有没有办法实现它?

1 个答案:

答案 0 :(得分:0)

我相信这可以通过简单的连接来完成:

select
shop.id,
shop.code,
company.company_name as agent_company_name
from
shop
left join agent on shop.agent_id=agent.id
left join company on agent.company_id=company.id
where
shop.id=2;