Problem
Table: Customer
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| name | varchar |
| referee_id | int |
+-------------+---------+
id is the primary key column for this table.
Each row of this table indicates the id of a customer, their name, and the id of the customer who referred them.
Write an SQL query to report the names of the customer that are not referred by the customer with id = 2
.
Return the result table in any order.
Return the result table in any order.
Examples
Example 1:
Input: Customer table:
+----+------+------------+
| id | name | referee_id |
+----+------+------------+
| 1 | Will | null |
| 2 | Jane | null |
| 3 | Alex | 2 |
| 4 | Bill | null |
| 5 | Zack | 1 |
| 6 | Mark | 2 |
+----+------+------------+
Output:
+------+
| name |
+------+
| Will |
| Jane |
| Bill |
| Zack |
+------+
Solution
Method 1 - Simple Where
Code
SQL
SELECT name
FROM Customer
WHERE referee_id != 2 OR referee_id IS NULL;
Method 2 - Using IFNULL OR Coelesce in Where
Code
SQL
SELECT name FROM customer WHERE IFNULL(referee_id,0) <> 2;
We can also use coalesce
, which is more standard (as ifnull
is MySQL specific.)
SELECT name FROM customer
WHERE coalesce(referee_id, 0) <> 2