根据另一个表的某些列匹配的总结果从MySQL中选择

时间:2013-11-10 01:46:13

标签: mysql

我的数据库中有两个表

类型包含: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代码中。

1 个答案:

答案 0 :(得分:1)

您想要的输出只是从有效查询中进行的一些小的语法更改:

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

虽然这可能是最容易理解的方式,但LEFT OUTER JOINGROUP BYHAVING的组合可能更有效:

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