0

DBに2つのテーブルがあります

ジャンルは次のとおりです。id, genre_id

音楽が含まれています:id, song_id, genre_id

次の結果を表示したい:

SELECT * FROM Genre WHERE total number of rows in Music 
WHERE Genre.genre_id = Music.genre_id > 4

私はそれを使用しようとして何時間も頭を悩ませてきましたが、それをJOIN論理的に解決してmysqlコードに入れる方法を理解できませんでした。

4

1 に答える 1

1

目的の出力は、有効なクエリからのわずかな構文変更のみです。

SELECT *
  FROM Genre g
 WHERE (SELECT COUNT(*) FROM Music m WHERE g.genre_id = m.genre_id) > 4

これがおそらく最もわかりやすい方法ですがLEFT OUTER JOINGROUP BYと を組み合わせたHAVING方が効率的かもしれません。

SELECT g.id, g.genre_id
  FROM Genre g
  LEFT OUTER JOIN Music m ON m.genre_id = g.genre_id
 GROUP BY g.id, g.genre_id
HAVING COUNT(*) > 4
于 2013-11-10T01:53:21.797 に答える