我有以下查询,它在 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 数据库中意外的重复记录引起的。需要调查重复项的来源。
最佳答案
很明显,子查询可以返回一组行,并且条件 tnot_notice_id >=
如果与一组行比较而不是仅与单个值比较则无效。
您确定存在满足您的where条件的唯一记录吗?
如果你想避免这种行为,我建议你使用 tnot_notice_id >= ALL ( subquery )
关于sql - 用作表达式的子查询返回的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10549188/