Sqlite 如何在计数中显示0?

Sqlite 如何在计数中显示0?,sqlite,Sqlite,如果没有资格匹配,如何显示0 我目前的查询是: select s.sname, count(*) as number from sailor s, boat b where s.rating >= b.rating group by s.sname order by number desc; 我得到的结果是: a 3 b 3 c 2 然而,这并不是我真正想要实现的。我想这样显示结果: a 3 b 3 c 2 d 0 e 0 我尝试将count()更改为isnull(count(

如果没有资格匹配,如何显示0

我目前的查询是:

select s.sname, count(*) as number
from sailor s, boat b
where s.rating >= b.rating
group by s.sname
order by number desc;
我得到的结果是:

a  3
b  3
c  2
然而,这并不是我真正想要实现的。我想这样显示结果:

a 3
b 3
c 2
d 0
e 0
我尝试将count()更改为isnull(count(),0)或coalesce(count(*),0),但在这种情况下不正确

CREATE TABLE sailor (
    sname   character varying primary key,
    rating  integer
);

create table boat (
    bname   character varying primary key,
    color   character varying,
    rating  integer
);
这可能对你有帮助

select s.sname,(select count(*) 
from boat b
where s.rating >= b.rating
) t
from sailor s
order by t desc;

您使用的是内部联接,当两个表中的数据匹配时,该联接只返回行

要返回没有任何匹配船只的水手,请使用:


你能把水手和船的结构张贴出来吗?
select s.sname, count(*) as number
from sailor s
left join boat b on s.rating >= b.rating
group by s.sname
order by number desc;