题目描述
选出所有 bonus < 1000 的员工的 name 及其 bonus。
Table:Employee
+-------+--------+-----------+--------+
| empId | name | supervisor| salary |
+-------+--------+-----------+--------+
| 1 | John | 3 | 1000 |
| 2 | Dan | 3 | 2000 |
| 3 | Brad | null | 4000 |
| 4 | Thomas | 3 | 4000 |
+-------+--------+-----------+--------+
empId 是这张表单的主键。
Table: Bonus
+-------+-------+
| empId | bonus |
+-------+-------+
| 2 | 500 |
| 4 | 2000 |
+-------+-------+
empId 是这张表单的主键。
Example ouput:
+-------+-------+
| name | bonus |
+-------+-------+
| John | null |
| Dan | 500 |
| Brad | null |
+-------+-------+
选出所有奖金<1000元的雇员姓名及奖金数额
思路分析
根据题意,奖金 < 1000 的员工包括没有发奖金和发得奖金不够1000这两部分。
本题关键在于没有发奖金的员工( null 值)的处理。
语句
SELECT
a.name, b.bonus
FROM
Employee a
LEFT JOIN
Bonus b
ON
a.empId = b.empId
WHERE
ifnull(b.bonus, 0) < 1000;