我有3个表广告,应用程序和人员。
Select * from advert v, application a
inner join people p on p.id = a.id
where v.id=a.id
此查询返回所有应用程序,不论性别如何。但有时候在广告表中,性别被指定为M.所以现在我希望上面的查询只返回M所做的应用程序。要获得此值,我需要再添加一个条件p.gender = v.gender
。我该怎么做呢?有时是v.gender = n/a
的值。然后我不需要这个条件。无论性别如何,它都应该归还给我。
答案 0 :(得分:1)
要获得所需的结果,您需要修改advert
和people
之间的联接条件,以加入两种情况下的记录(v.gender = 'n/a' or p.gender = v.gender
):
select *
from advert v
join application a
on a.id = v.id
join people p
on p.id = a.id
and (v.gender = 'n/a' or p.gender = v.gender)
答案 1 :(得分:0)
我对你的要求感到有些困惑,但这是开始的事情。一些示例数据也很有帮助
select *
from advert v
inner join application a
on a.id = v.id
inner join people p
on a.id = p.id
where p.gender = 'M';
或
select *
from advert v
inner join application a
on a.id = v.id
inner join people p
on a.id = p.id
where p.gender = v.gender;
答案 2 :(得分:0)
您可能会因此使用IN运算符:
WHERE v.GENDER IN ('N/A',p.GENDER)
这将返回v.GENDER ='N / A'或其中v.gender = p.GENDER
的所有记录