SQL用于从一个表中收集数据,同时计算另一个表中的记录

Was*_*sim 4 sql count

我有一个用户表和一个歌曲表,我想选择用户表中的所有用户,同时计算他们在歌曲表中有多少首歌曲.我有这个SQL,但它不起作用,有人能发现我做错了吗?

SELECT jos_mfs_users.*, COUNT(jos_mfs_songs.id) as song_count 
FROM jos_mfs_users 
INNER JOIN jos_mfs_songs
ON jos_mfs_songs.artist=jos_mfs_users.id
Run Code Online (Sandbox Code Playgroud)

非常感谢帮助.谢谢!

Nar*_*ian 11

内部联接不起作用,因为它将songs表中的每个匹配行与users表连接起来.

SELECT jos_mfs_users.*, 
    (SELECT COUNT(jos_mfs_songs.id) 
        FROM jos_mfs_songs
        WHERE jos_mfs_songs.artist=jos_mfs_users.id) as song_count 
FROM jos_mfs_users 
WHERE (SELECT COUNT(jos_mfs_songs.id) 
        FROM jos_mfs_songs
        WHERE jos_mfs_songs.artist=jos_mfs_users.id) > 10
Run Code Online (Sandbox Code Playgroud)

  • `SELECT A.*,(SELECT COUNT(*)FROM B WHERE B.a_id = A.id)AS TOT FROM A`是一个更简单的解决方案 (3认同)