sql count(包括null)来自表where的两个条件

zed5wv10  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(526)

我有两个表格,一个是团队统计,另一个是团队总结。
团队总结中有16个tName,在团队统计的赢与输一栏中,1表示赢,0表示输。

team_summary            team_stats
tName W                 Period tName win_lose
AUT   null              1      AUT   1
CAN   null              2      AUT   1
DEN   null              3      AUT   1
FIN   null              Total  AUT   1
...                     1      CAN   0
                        2      CAN   0
                        ...

我想在团队总结的w栏中插入。
当我询问

select tName, count(*) from team_stats 
where Period='Total' and (win_lose) = 1 group by tName;

返回14行,不包括0计数。

tName count(*)
AUT   1
CAN   6
DEN   4
...

我想取16行,包括这14个值和2个0(或null)值。
我该怎么做?

iugsix8n

iugsix8n1#

你可以在下面尝试-通过删除 win_lose = 1 从where子句

select tName, count(*) from team_stats 
group by tName
vi4fp9gy

vi4fp9gy2#

你好像想要一个 update :

update team_summary ts left join
       (select tName, count(*) as wins
        from team_stats 
        where Period = 'Total' and (win_lose) = 1 
        group by tName
       ) t
       on ts.tName = t.tName
    set ts.summary = coalesce(t.wins, 0);
yacmzcpb

yacmzcpb3#

如果你有16个团队在团队统计中,并且每个团队都有“总数”信息,那么你只需要:

select tName, win_lose from team_stats 
where Period='Total';

如果您想知道每个团队出现在团队统计表中的次数:

select tName, count(tName) from team_stats
group by tName;

相关问题