使用subselect完成LEFT JOIN

And*_*dre 14 sql subquery multiple-columns

是否可以通过subselect实现LEFT JOIN的等效,其中需要多列.这就是我的意思.

SELECT m.*, (SELECT * FROM model WHERE id = m.id LIMIT 1) AS models FROM make m
Run Code Online (Sandbox Code Playgroud)

现在这样做,这给了我一个'操作数应该包含1列'的错误.

是的我知道LEFT JOIN可以做到这一点,但我被告知可以通过subselect我很好奇它是如何完成的.

ber*_*nie 24

你建议的有很多实际用途.

release_date对于任何具有至少一个的make,此假设查询将返回最新的(人为的示例),对于任何没有的make release_date,返回null release_date:

SELECT m.make_name, 
       sub.max_release_date
  FROM make m
       LEFT JOIN 
           (SELECT id, 
                   max(release_date) as max_release_date
              FROM make 
           GROUP BY 1) sub
       ON sub.id = m.id
Run Code Online (Sandbox Code Playgroud)


Mis*_*mbu 7

子选择只能从其返回一列,因此您需要为要从模型表返回的每列进行一次子选择.

  • 子查询可以从FROM和JOIN返回多个列,因为您正在该上下文中使用行。由于仅在SELECT上下文中使用标量,因此只能从那里的子查询返回一个值。 (2认同)