表中的sql计数(包括null),其中有两个条件

时间:2018-11-27 06:43:45

标签: mysql sql

我有两个表,一个是team_stats,另一个是team_summary。
team_summary中有16个tName,而team_stats的win_lose列中1表示胜利,0表示失败。

    function ppc_override_mce_options( $init_array ) {
        global $allowedposttags;
        $init_array['valid_elements'] = '*[*]';
        $init_array['extended_valid_elements'] = '*[*]';
        $init_array['valid_children'] = '+a[' . implode( '|', array_keys( $allowedposttags ) ) . ']';
        $init_array['indent'] = true;
        $init_array['wpautop'] = false;
        $init_array['force_p_newlines'] = false;
        $init_array['object_resizing'] = false;

        return $init_array;
    }
    add_filter('tiny_mce_before_init', 'ppc_override_mce_options');

我想插入team_summary的W列。
当我查询

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
                        ...

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

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

我想取16行,包括那14个值和2个值为0(或为null)的值。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

您可以尝试以下操作-通过从where子句中删除win_lose = 1

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

您似乎想要一个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);