MySQLのサブクエリを使わずに、あるデータを取得したいのですがうまくクエリを作成できません。
もしかするとその考え方自体がナンセンスなのかもしれませんが、もしアドバイスをいただけたら嬉しいです。
今回使用しているテーブル構成が分かるように下記にキャプチャを貼ります。(データの行数が多いので一部を抜粋しています)
やりたいこと
- サブクエリを使わずに、playersテーブルから、各ポジションごとに一番身長が高いプレイヤーを取得したい
- 取得するcolumnはposition, MAX(height), name
以下のようにサブクエリを使えば、うまく取得できます
SELECT p1.position, p1.aaa, p2.name FROM (SELECT position, MAX(height) AS aaa FROM players GROUP BY position) p1 JOIN players p2 ON p1.position = p2.position AND p1.aaa = p2.height;
データを取得できないクエリ
SELECT p1.position, MAX(p1.height), p2.name FROM players p1 GROUP BY position JOIN players p2 ON p1.position = p2.position AND MAX(p1.height) = p2.height;
自分では、こちらのクエリでも、サブクエリ同様にGROUP BYでまとめたp1テーブルにp2テーブルをJOINしているのでサブクエリを使わなくてもデータ取得が行えると思いましたがsyntax errorで取得できませんでした。
もしわかる方がいましたら教えていただきたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー