繁体   English   中英

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

[英]Select from MySQL based on another table's total result of certain column match

我的数据库中有两个表

流派包含: 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代码中。

您所需的输出只是有效查询的一些次要语法更改:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM