Problem

Table: Customer

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
+-------------+---------+
| 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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
+----+------+------------+
| id | name | referee_id |
+----+------+------------+
| 1  | Will | null       |
| 2  | Jane | null       |
| 3  | Alex | 2          |
| 4  | Bill | null       |
| 5  | Zack | 1          |
| 6  | Mark | 2          |
+----+------+------------+

Output:

1
2
3
4
5
6
7
8
+------+
| name |
+------+
| Will |
| Jane |
| Bill |
| Zack |
+------+

Solution

Method 1 - Simple Where

Code

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

Method 2 - Using IFNULL OR Coelesce in Where

Code

1
SELECT name FROM customer WHERE IFNULL(referee_id,0) <> 2;
1
2
SELECT name FROM customer 
WHERE coalesce(referee_id, 0) <> 2