【发布时间】:2011-07-07 03:18:43
【问题描述】:
我需要运行培训查询以返回以下问题的结果:“谁完成了这次培训,但没有完成那次培训?”
在下面的简化表中,我想知道哪个员工已完成 training_id 1(如 completed_date 字段中的日期所示),但尚未完成 training_id 7。
+-------------+-------------+----------------+
| emp_id | training_id | completed_date |
+-------------+-------------+----------------+
| 1 | 1 | 2010-04-02 |
+-------------+-------------+----------------+
| 1 | 7 | Null |
+-------------+-------------+----------------+
| 2 | 1 | Null |
+-------------+-------------+----------------+
| 2 | 7 | Null |
+-------------+-------------+----------------+
期望的结果是 emp_id 1,我们希望根据查询参数返回他/她完成的训练和未完成的训练:
+-------------+-------------+----------------+
| emp_id | training_id | completed_date |
+-------------+-------------+----------------+
| 1 | 1 | 2010-04-02 |
+-------------+-------------+----------------+
| 1 | 7 | Null |
+-------------+-------------+----------------+
我不知道如何使用常规查询来执行此操作,因为它似乎需要 IF 逻辑。例如:返回第一次训练完成的行并返回第二次训练未完成的行,但仅在第一次训练完成时返回。
我如何在 SQL 中表达类似的东西?
【问题讨论】:
标签: mysql sql conditional