複数の列が必要な場合、副選択を使用してLEFTJOINと同等の機能を実現できます。これが私の言いたいことです。
SELECT m.*, (SELECT * FROM model WHERE id = m.id LIMIT 1) AS models FROM make m
現在のところ、これを実行すると、「オペランドには1つの列が含まれている必要があります」というエラーが発生します。
はい、これはLEFT JOINで可能であることは知っていますが、サブセレクトで可能であると言われました。それがどのように行われるのか興味があります。
副選択では、そこから返される列は1つだけであるため、モデルテーブルから返される列ごとに1つの副選択が必要になります。
あなたが提案するものには多くの実用的な使用法があります。
この架空のクエリは、少なくとも1つのrelease_date
を含むすべてのmakeに対して最新のrelease_date
(考案された例)を返し、release_date
を含まないすべてのmakeに対して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