我基本上试图提出一个政策的概要,这个概要属于某个具有某种政策类型的机构,它必须是最新的政策。
我已经写出了一个SQL查询,并且在执行时没有错误,但是当应该至少检索到一个数据时,它不会提取任何数据。
以下是我的询问:
select synopsis
from policy p
left outer join institution_has_policy ihp
on p.policy_id = ihp.policy_id
left outer join institution i
on i.institution_id = ihp.institution_id
where p.policy_type_id = 5
and i.institution_name = 'SSgA Funds Management, Inc.'
and current_as_of_date = (select max(current_as_of_date) from policy p);
我的sql语句是否正确?
答案 0 :(得分:2)
这是您的查询:
select synopsis
from policy p left outer join
institution_has_policy ihp
on p.policy_id = ihp.policy_id left outer join
institution i
on i.institution_id = ihp.institution_id
where p.policy_type_id = 5 and
i.institution_name = 'SSgA Funds Management, Inc.'
current_as_of_date = (select max(current_as_of_date) from policy p);
不会返回任何数据,因为截至日期的最大值与策略和机构名称不对应。如果您只想返回一行,那么您可以使用order by
和limit
来获取最新信息:
select synopsis
from policy p left outer join
institution_has_policy ihp
on p.policy_id = ihp.policy_id left outer join
institution i
on i.institution_id = ihp.institution_id
where p.policy_type_id = 5 and
i.institution_name = 'SSgA Funds Management, Inc.'
order by current_as_of_date desc
limit 1;
答案 1 :(得分:1)
这是不正确的,因为您选择的策略很可能不是实际上最新的策略(所有策略,而不是所有已过滤的策略)。您可以尝试删除日期约束,按日期排序并仅选择第一行(LIMIT 1)。