人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

一条sql 多个count 不同条件。以及sql的连接方式的定义区别

1. 一条sql语句统计某一列,但每个count 又处于不同的条件

  例如:统计所有任务以及今天发布的任务的数量

  解决:以下代码,

SELECT
    username,
    count(t.task_code) as allTaskNum,
    SUM( CASE WHEN date_format( t.create_time, '%Y-%m-%d' )= date_format( now(), '%Y-%m-%d' ) THEN 1 ELSE 0 END ) AS taskTodayNum 
FROM
    sys_user s
    LEFT JOIN yw_task t ON t.create_by = s.id 
GROUP BY
    username

 

  

 

   启发:如果仅需统计一种,但count需要写条件,那么建议使用sum case后面 有一个case_value 可以不写 when后面是可以带条件 and or 啥的都行

2. sql语句的连接方式(照搬的,在学校学的有点忘记了),多实践与上机练习才是王道!!!

  left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
  right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
  inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
  full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。

posted @ 2021-08-11 17:40  宇~  阅读(1076)  评论(0编辑  收藏  举报