SQLZOO筆記-NULL

使用 NULL(缺失值)

老師和學(xué)部

一個學(xué)校中包含不同的學(xué)部,大部分老師只為一個學(xué)部工作上課,部分老師不歸屬于任何學(xué)部。

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 的老師,以及沒有教師數(shù)據(jù)的學(xué)部

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,列出所有學(xué)部名稱

使用 COALESCE 函數(shù)

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

注意: COALESCE 函數(shù),可以方便更換對于缺省值 NULL的輸出。比如,本例中,如果 Mobile 字段是 NULL,則返回'07986 444 2266'

  1. 使用 COALESCE 函數(shù)和 LEFT JOIN
SELECT teacher.name ,COALESCE(dept.name ,'None') 
FROM teacher 
LEFT OUTER JOIN dept
ON (teacher.dept=dept.id)
  1. 使用 COUNT 函數(shù)
SELECT COUNT(name),COUNT(mobile)
FROM teacher 

  1. 使用 COUNT 函數(shù)和 GROUP BY 語句
SELECT dept.name, COUNT(teacher.name)
FROM teacher 
RIGHT JOIN dept ON (teacher.dept=dept.id)
GROUP BY dept.name
  1. 使用 CASE 函數(shù)

如果教師來自學(xué)部屬性為 1 或 2,那么后面跟上「SCI」,否則一律跟上「Art」。

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

如果教師來自學(xué)部屬性為 1 或 2,那么后面跟上「SCI」,如果教師來自學(xué)部屬性為 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)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容