美文网首页
SQLZOO笔记-NULL

SQLZOO笔记-NULL

作者: adi0229 | 来源:发表于2020-03-25 17:14 被阅读0次

    使用 NULL(缺失值)

    老师和学部

    一个学校中包含不同的学部,大部分老师只为一个学部工作上课,部分老师不归属于任何学部。

    1.部门属性是 NULL 的老师

    SELECT name
    FROM teacher
    WHERE dept IS NULL
    

    2.inner JOIN

    SELECT teacher.name, dept.name
     FROM teacher INNER JOIN dept
               ON (teacher.dept=dept.id)
    

    注意:inner JOIN省略了 dept 是 NULL 的老师,以及没有教师数据的学部

    3.LEFT OUTER JOIN

    SELECT teacher.name, dept.name
    FROM teacher 
    LEFT OUTER JOIN dept
    ON (teacher.dept=dept.id)
    

    注意:LEFT OUTER JOIN,列出所有教师名字

    4.RIGHT OUTER JOIN

    SELECT teacher.name, dept.name
    FROM teacher 
    RIGHT OUTER JOIN dept
    ON (teacher.dept=dept.id)
    

    注意:RIGHT OUTER JOIN,列出所有学部名称

    使用 COALESCE 函数

    1. 使用 COALESCE 函数
    SELECT name ,COALESCE(mobile,'07986 444 2266') 
    FROM teacher 
    

    注意: COALESCE 函数,可以方便更换对于缺省值 NULL的输出。比如,本例中,如果 Mobile 字段是 NULL,则返回'07986 444 2266'

    1. 使用 COALESCE 函数和 LEFT JOIN
    SELECT teacher.name ,COALESCE(dept.name ,'None') 
    FROM teacher 
    LEFT OUTER JOIN dept
    ON (teacher.dept=dept.id)
    
    1. 使用 COUNT 函数
    SELECT COUNT(name),COUNT(mobile)
    FROM teacher 
    
    
    1. 使用 COUNT 函数和 GROUP BY 语句
    SELECT dept.name, COUNT(teacher.name)
    FROM teacher 
    RIGHT JOIN dept ON (teacher.dept=dept.id)
    GROUP BY dept.name
    
    1. 使用 CASE 函数

    如果教师来自学部属性为 1 或 2,那么后面跟上「SCI」,否则一律跟上「Art」。

    SELECT teacher.name 
    ,CASE WHEN dept IN (1,2)
              THEN 'Sci'
               ELSE 'Art'
           END
    FROM teacher 
    LEFT OUTER JOIN dept
    

    如果教师来自学部属性为 1 或 2,那么后面跟上「SCI」,如果教师来自学部属性为 3,那么后面跟上「Art」,否则一律跟上「None」。

    SELECT teacher.name 
    ,CASE WHEN dept IN (1,2)
              THEN 'Sci'
              WHEN dept = 3
              THEN 'Art'
              ELSE 'None'
           END
    FROM teacher 
    LEFT OUTER JOIN dept
    ON (teacher.dept=dept.id)
    

    相关文章

      网友评论

          本文标题:SQLZOO笔记-NULL

          本文链接:https://www.haomeiwen.com/subject/xntxrctx.html