SQL每日刷題—多表連線
阿新 • • 發佈:2021-01-09
SQL—day8
題目
某網站包含兩個表,Customers 表和 Orders 表。編寫一個 SQL 查詢,找出所有從不訂購任何東西的客戶。
示例:
Customers 表:
+----+-------+
| Id | Name |
+----+-------+
| 1 | Joe |
| 2 | Henry |
| 3 | Sam |
| 4 | Max |
+----+-------+
例如給定上述表格,你的查詢應返回:
+-----------+ | Customers | +-----------+ | Henry | | Max | +-----------+
預備知識
多表連線
轉載自 https://leetcode-cn.com/problems/customers-who-never-order/solution/tu-jie-sqlmian-shi-ti-cha-zhao-bu-zai-biao-li-de-s/
思路
1. 如果我們有一份曾經訂購過的客戶名單,就很容易知道誰從未訂購過。然後,我們可以使用 NOT IN 查詢不在此列表中的客戶。
2. 如果沒有這樣的第二最高工資,這個解決方案將被判斷為 “錯誤答案”,因為本表可能只有一項記錄。為了克服這個問題,我們可以將其作為臨時表。附加一個巢狀查詢,內層查詢結果為為空時,將 Null 附給 SecondHighestSalary 使得其返回值為 Null;
程式碼
select customers.name as 'Customers'
from customers
where customers.id not in
(
select customerid from orders
);
select C.Name as Customers
from Customers as C
left join Orders as O
on C.Id = O.CustomerId
where O.CustomerId is null
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/customers-who-never-order