Sql “如何删除计数值”;0“;从结果表中?

Sql “如何删除计数值”;0“;从结果表中?,sql,Sql,我正在尝试编写一个查询,返回一个包含列name和numberOfClasses的表。此表包括所有学生的姓名以及学生所参加的课程数量。我使用以下数据库表: ╔══════════════╦═══════════╦══════════╗ ║ TakesClasses ║ ║ ║ ╠══════════════╬═══════════╬══════════╣ ║ id ║ person_id ║ class_id ║ ║ 99

我正在尝试编写一个查询,返回一个包含列
name
numberOfClasses
的表。此表包括所有学生的姓名以及学生所参加的课程数量。我使用以下数据库表:

╔══════════════╦═══════════╦══════════╗
║ TakesClasses ║           ║          ║
╠══════════════╬═══════════╬══════════╣
║ id           ║ person_id ║ class_id ║
║ 99           ║ 1         ║ 40       ║
║ 98           ║ 1         ║ 41       ║
║ 97           ║ 1         ║ 42       ║
║ 96           ║ 1         ║ 43       ║
║ 95           ║ 2         ║ 44       ║
║ 94           ║ 2         ║ 45       ║
║ 93           ║ 2         ║ 46       ║
╚══════════════╩═══════════╩══════════╝
╔═════════╦═══════╦══╗
║ Persons ║       ║  ║
╠═════════╬═══════╬══╣
║ id      ║ name  ║  ║
║ 1       ║ Bart  ║  ║
║ 2       ║ David ║  ║
║ 3       ║ Dani  ║  ║
║ 4       ║ Erik  ║  ║
╚═════════╩═══════╩══╝
我使用了以下查询:

SELECT
    name,
    COUNT(T.person_id) AS numberOfClasses 
FROM
    Persons P 
LEFT OUTER JOIN 
    TakesClasses T ON P.id = T.person_id
GROUP BY
    P.id, P.name
这是输出:

╔═══════╦═════════════════╗
║ name  ║ numberOfClasses ║
╠═══════╬═════════════════╣
║ Bart  ║           4     ║
║ Dani  ║           3     ║
║ David ║           0     ║
║ Erik  ║           0     ║
╚═══════╩═════════════════╝
如何从结果表中删除带有0的条目


提前谢谢你的帮助

只需使用
JOIN
而不是
LEFT JOIN

select name, count(T.person_id) as amountOfClasses 
from Persons P join
     TakesClasses T
     on P.id = T.person_id
group by P.id, P.name

如果您想对聚合数据进行过滤,如
groupby
产生的数据,可以使用
HAVING
子句

SELECT name,COUNT(T.person_id) as amountOfClasses 
       FROM Persons P LEFT OUTER JOIN TakesClasses T
       on P.id = T.person_id 
GROUP BY P.id, P.name
HAVING COUNT(T.person_id) > 0;

SQLFIDLE:

执行内部联接而不是左联接。