是否可以使用子查询实现左连接的等效操作,其中需要多列。 这就是我的意思。
SELECT m.*, (SELECT * FROM model WHERE id = m.id LIMIT 1) AS models FROM make m
目前这样做会导致出现“操作数应只包含1个列”的错误。
是的,我知道可以使用LEFT JOIN实现,但有人告诉我可以用子查询来实现,所以我很想知道如何实现。
是否可以使用子查询实现左连接的等效操作,其中需要多列。 这就是我的意思。
SELECT m.*, (SELECT * FROM model WHERE id = m.id LIMIT 1) AS models FROM make m
目前这样做会导致出现“操作数应只包含1个列”的错误。
是的,我知道可以使用LEFT JOIN实现,但有人告诉我可以用子查询来实现,所以我很想知道如何实现。
你所提出的建议有很多实际应用。
这个假设的查询将返回至少有一个release_date
的任何车型的最新release_date
(举例说明),对于没有release_date
的车型则返回null:
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
子查询只能从中返回一个列,因此您需要为每个要从模型表返回的列使用一个子查询。