结合连接和计数的MySQL语句?

Cor*_*rey 26 sql join count

我有一个'文件夹'表.我想返回userId为16的所有记录.

SELECT * FROM `folders` WHERE userId = 16;
Run Code Online (Sandbox Code Playgroud)

我有一张'文件'表.对于上面返回的每个"文件夹",我想返回该"文件夹"中的"文件"计数.

SELECT COUNT(*) as "Files" FROM files WHERE Folder = n;
Run Code Online (Sandbox Code Playgroud)

我如何结合这些?我迷路了.谢谢!

jen*_*wan 52

SELECT  fol.*
 ,      (       SELECT  COUNT(*)
                FROM    files           fil
                WHERE   fil.Folder      = fol.Folder
        )       AS      "Files"
FROM    folders         fol
WHERE   fol.userId      = 16
Run Code Online (Sandbox Code Playgroud)

它被称为相关子查询.

http://dev.mysql.com/doc/refman/5.1/en/correlated-subqueries.html


dus*_*oft 15

您可能需要使用GROUP BY并按ID或其分组:

SELECT 
    folders.*,
    COUNT(files.*) as filetotal 
FROM folders 
    LEFT JOIN files ON folders.ID=files.folderID 
WHERE userId = 16 
GROUP BY folders.ID
Run Code Online (Sandbox Code Playgroud)

  • 他在原始查询中有*,我不知道他的桌子是什么样的,所以停止拖钓并使用你的智慧来创造一些东西. (4认同)