在sql中不重复的组合或条件

在sql中不重复的组合或条件,sql,oracle,Sql,Oracle,我正在尝试选择介于date_from和date_to之间的电话号码 或者指定的日期为空 但是Or部分的问题忽略了其他条件,其中pho.parent_id=:p_id和pho.phone_type='M'和rownum将Or条件放在大括号内 select pho.PHONE_NUMBER from per_phones pho where pho.parent_id = :p_id and pho.phone_type='M' and rownum <=1 an

我正在尝试选择介于date_from和date_to之间的电话号码 或者指定的日期为空 但是Or部分的问题忽略了其他条件,其中pho.parent_id=:p_id和pho.phone_type='M'和rownum将Or条件放在大括号内

select pho.PHONE_NUMBER 
    from per_phones pho 
    where pho.parent_id = :p_id and pho.phone_type='M' 
    and rownum <=1 and 
      (sysdate > pho.DATE_FROM and sysdate < DATE_TO or DATE_TO is null)
把你的身体状况放在支架内

select pho.PHONE_NUMBER 
    from per_phones pho 
    where pho.parent_id = :p_id and pho.phone_type='M' 
    and rownum <=1 and 
      (sysdate > pho.DATE_FROM and sysdate < DATE_TO or DATE_TO is null)
如果您的记录从日期到时间结束有效,我认为您的日期为空

您仍然需要检查DATE_FROM条件,并将rownum条件放在外部查询中,因此需要以下内容:

Select PHONE_NUMBER from
(select pho.PHONE_NUMBER 
  from per_phones pho 
 where pho.parent_id = :p_id 
   and pho.phone_type='M' 
   and rownum <= 1 -- this is not needed here
   and sysdate > pho.DATE_FROM 
   and (sysdate < DATE_TO or DATE_TO is null)
)
 Where rownum <= 1
干杯

如果您的记录从日期到时间结束有效,我认为您的日期为空

您仍然需要检查DATE_FROM条件,并将rownum条件放在外部查询中,因此需要以下内容:

Select PHONE_NUMBER from
(select pho.PHONE_NUMBER 
  from per_phones pho 
 where pho.parent_id = :p_id 
   and pho.phone_type='M' 
   and rownum <= 1 -- this is not needed here
   and sysdate > pho.DATE_FROM 
   and (sysdate < DATE_TO or DATE_TO is null)
)
 Where rownum <= 1
干杯