根据条件正确连接两个MySQL表

时间:2017-04-22 22:48:05

标签: php mysql sql database

我的数据库有以下两个表

工作:

+----+--------------+
| id | name         |
+----+--------------+
|  1 | Mechanic     |
|  2 | Programmer   |
|  3 | Cleaner      |
|  4 | Truck driver |
+----+--------------+

资格:

+--------+--------------------+
| job_id | qualification      |
+--------+--------------------+
|      1 | drivers_license    |
|      1 | engine_certificate |
|      2 | mysql_certificate  |
|      4 | drivers_license    |
+--------+--------------------+

让我们说我有一个drivers_license和一个mysql_certificate。我想创建一个SQL查询,返回所有没有要求的工作。因此查询的结果应该是作业ID 2,3和4。

我尝试了以下查询:

select * 
  from jobs j
  join qualifications q
    on j.id = q.job_id 
 where q.qualification = 'drivers_license' || 
q.qualification = 'mysql_certificate';

返回id 1,2和4,因此显然不起作用。

如何在SQL中实现这一目标?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用group byhaving

select j.name, j.id
from jobs j join
     qualifications q
     on j.id = q.job_id 
group by j.name, j.id
having sum(q.qualification not in ('drivers_license' , 'mysql_certificate')) = 0;
相关问题