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 に答える