在where子句中添加条件

时间:2016-07-05 08:46:31

标签: sql oracle

我有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的值。然后我不需要这个条件。无论性别如何,它都应该归还给我。

3 个答案:

答案 0 :(得分:1)

要获得所需的结果,您需要修改advertpeople之间的联接条件,以加入两种情况下的记录(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

的所有记录