执行查询但没有显示数据 - MySQL

时间:2014-06-19 16:19:06

标签: mysql sql mysql-workbench

我基本上试图提出一个政策的概要,这个概要属于某个具有某种政策类型的机构,它必须是最新的政策。

我已经写出了一个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语句是否正确?

2 个答案:

答案 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 bylimit来获取最新信息:

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)。