我有以下查询,它在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数据库中无法预料的重复记录引起的。需要调查重复的地方。
答案 0 :(得分:3)
很明显,子查询可以返回一组行,如果与一组行进行比较而不是只有一个值,则条件tnot_notice_id >=
无效。
您确定存在满足您所处条件的独特记录吗?
如果您想避免这种行为,我建议您使用tnot_notice_id >= ALL ( subquery )