【MySQL】LEFT JOINを使用したSELECT文で、レコード数が少ない方のテーブルにLIMITを指定したい

知りたいこと

MySQLの学習をしています。
LEFT JOINを使用したSELECT文で、レコード数が少ない方のテーブルにLIMITを指定したいです。
LIMITの使用では実現不可であれば最もスマートな他の方法を知りたいです。

前提

下記の2つのテーブルをLEFT JOINで結合し、LIMITを指定したSELECT文を動かしていますが、思うような結果を得られません。

■playerテーブル

id name
1 suzuki
2 tanaka
3 yamamoto
4 satou
5 katou

■daysテーブル

pid day
1 Mon.
1 Sun.
2 Mon.
2 Sat.
3 Tue.
3 Fri.
3 Sun.
5 Thu.
5 Fri.
5 Sat.

■SQL文
SELECT name, day FROM player LEFT OUTER JOIN days ON player.id = days.pid ORDER BY player.id ASC LIMIT 2;

■結果
LIMITを2としているので、結合されたテーブルの2レコード分を得られました。が、これは求めている結果ではありません。

name day
suzuki Mon.
suzuki Sun.

得たい結果

結合したテーブルの2レコードではなく、結合前のplayerテーブルの2レコード(idの1と2)に紐づけられたレコードを取得したいです。

name day
suzuki Mon.
suzuki Sun.
tanaka Mon.
tanaka Sat.

こちらを実現するにはどのようなSQL文を書けば良いのでしょうか?
複数回SQLを実行するしかありませんか?スマートな方法をご教示いただきたいです。
よろしくお願いいたします。

コメントを投稿

0 コメント