↓快轉到主要內容
  1. LeetCode/

LeetCode 584: Find Customer Referee

·1 分鐘· ·
LeetCode Easy Database Sql
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2025-12-23

  • 提交紀錄:Accepted(一次通過)

解題思路
#

要找「不是被 2 號推薦」的客戶,包含沒有推薦人(referee_id 是 NULL)的人。

SQL 的比較有三種結果,NULL != 2 是 unknown,不是 true,而 WHERE 只留下 true 的列(SQL 模板二)。所以只寫 referee_id != 2 會漏掉 NULL 的人,要另外加上 IS NULL。

我的解法
#

SELECT name
FROM Customer
WHERE referee_id IS NULL OR referee_id != 2;

也可以寫成 WHERE COALESCE(referee_id, 0) != 2,先把 NULL 換成一個不會是 2 的值。

複雜度
#

掃一次資料表,O(n)。

要特別避免的錯誤
#

  • 跟 NULL 比較要用 IS NULL,= NULL 和 != 2 都不會選到 NULL 的列。

面試口說整理
#

推薦人不是 2 號的人包含沒有推薦人的人,但 NULL != 2 在 SQL 裡是 unknown,WHERE 不會留下,所以要用 referee_id IS NULL OR referee_id != 2。

相關文章

LeetCode 1757: Recyclable and Low Fat Products
·1 分鐘
LeetCode Easy Database Sql
LeetCode 1757 解題筆記:兩個條件都要成立,用 WHERE … AND … 過濾
LeetCode 197: Rising Temperature
·1 分鐘
LeetCode Easy Database
LeetCode 197 解題筆記:Weather self join,條件是兩天的日期差 1 天而且今天比較熱;日期要用 DATEDIFF 比,不能比 id
LeetCode 595: Big Countries
·1 分鐘
LeetCode Easy Database
LeetCode 595 解題筆記:面積至少 300 萬或人口至少 2500 萬,用 WHERE 加 OR 過濾
LeetCode 596: Classes With at Least 5 Students
·1 分鐘
LeetCode Easy Database
LeetCode 596 解題筆記:按 class 分組,HAVING COUNT(DISTINCT student) >= 5;舊版測資有重複的列,要數不同的學生
LeetCode 620: Not Boring Movies
·1 分鐘
LeetCode Easy Database
LeetCode 620 解題筆記:id 是奇數而且 description 不是 boring,按 rating 由高到低排序
LeetCode 175: Combine Two Tables
·1 分鐘
LeetCode Easy Database
LeetCode 175 解題筆記:沒有地址的人也要出現,所以用 LEFT JOIN,對不到的 city、state 會是 NULL