由用作表达式的子查询返回的多行

时间:2012-05-11 09:55:23

标签: sql postgresql

我有以下查询,它在Oracle和SQL Server 2008上运行得非常好,但它似乎不能在PostgreSQL上运行。该查询旨在返回与给定条件匹配的记录计数。有人可以解释这个的原因,并提供一个解决方案,以解决如何修改此查询,以使其产生预期的结果。

查询:

select count(*) 
from tma_notices 
where TNOT_NOTICE_TYPE ='0400' 
and TNOT_NOTICE_STATUS = 'OK' 
and tnot_notice_id >= 
    (
        select NOTICE_NUM_AT_MIDNIGHT 
        from RWOL_COUNTER_QUERY_TYPE 
        where QUERY_TYPE = 'START_NOTICES_TODAY' 
        and USER_NAME = 'PUBLIC'
    )

更新:此错误是由PostgreSQL数据库中无法预料的重复记录引起的。需要调查重复的地方。

1 个答案:

答案 0 :(得分:3)

很明显,子查询可以返回一组行,如果与一组行进行比较而不是只有一个值,则条件tnot_notice_id >=无效。

您确定存在满足您所处条件的独特记录吗?

如果您想避免这种行为,我建议您使用tnot_notice_id >= ALL ( subquery )