在子表中的条件返回null

时间:2011-01-14 15:48:43

标签: sql mysql database

说我有2张桌子,人和工作。

+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| name   | varchar(255) | NO   |     | NULL    |                |
| job_id | int(11)      | NO   |     | NULL    |                |
+--------+--------------+------+-----+---------+----------------+

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| j_id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| j_name   | varchar(255) | NO   |     | NULL    |                |
| j_active | tinyint(1)   | NO   |     | 0       |                |
+----------+--------------+------+-----+---------+----------------+

如何选择只返回job_id的{​​{1}},否则返回0或NULL?所以,我想要总是归还所有人,但是当他们的工作不活跃时,我不想返回他们的工作ID

2 个答案:

答案 0 :(得分:3)

select * from person p left join job j on p.job_id=j.j_id and j.j_active=1

答案 1 :(得分:0)

案例陈述应该有效。类似的东西:

select name, case when j_active=1 then job_id else null end as job_id
from person join job on (person.job_id=job.j_id)