说我有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
答案 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)