0

我有以下查询,它在 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 数据库中不可预见的重复记录引起的。需要调查重复的来源。

4

1 回答 1

3

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

您确定存在满足您的 where 条件的唯一记录吗?

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

于 2012-05-11T10:00:12.650 回答