我正面临一个问题。我想比较一个日期与通过SUBQUERY返回的同一个表中的多个值。查询目的是查找用户-9插入的地址,并且他们的modified_date小于除了-9之外的用户插入的地址的modified_date,其中address_type_id是本地地址。
例如,查询是
select pps_id,name
from individual_address i
where i.modified_by = -9
and i.address_type_id=1
and i.modified_date < (select modified_date from individual_address a where a.modified_by <> -9
and a.address_type_id=1);
此查询提供异常,因为它返回多行时无法进行此比较。我知道这不对。有人可以帮助我,我怎样才能实现同样的目标?
示例数据示例
Individual_Address
PPS_ID MODIFIED_BY MODIFIED_DATE ADDRESS_TYPE_ID EMIRATES
1234 -9 15-05-2009 1 2
1234 1 15-05-2010 2 1
1234 1 15-05-2010 1 2
1900 1 15-05-2014 1 1
1900 1 15-05-2014 2 1
1900 1 10-07-2010 1 1
我希望得到针对-9的所有记录,其中address_type_id为1但其修改日期小于用户不是-9的修改日期。
谢谢,
答案 0 :(得分:2)
select pps_id,name
from individual_address i
where i.modified_by = -9
and i.address_type_id=1
and i.modified_date < (select MIN(modified_date) from individual_address a
where a.modified_by <> -9
and a.address_type_id=1);
这里的地址可以被很多用户修改。我想你想要modified_date&lt; min(除-9之外的用户的modified_date)
答案 1 :(得分:1)
仅从结果中获取最大和最小日期。
select pps_id,name
from individual_address i
where i.modified_by = -9
and i.address_type_id=1
and i.modified_date between (select min(modified_date) from individual_address a where a.modified_by <> -9 ) and (select max(modified_date) from individual_address a where a.modified_by <> -9 )
and a.address_type_id=1);