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

标签 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 数据库中意外的重复记录引起的。需要调查重复项的来源。

最佳答案

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

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

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

关于sql - 用作表达式的子查询返回的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10549188/

相关文章:

c# - 如何从偶尔连接的设备(笔记本电脑)获取数据到后端 SQL Server

sql - 我可以使用什么 SQL 服务器函数来获取 nvarchar(max) 列的字符或字节长度?

postgresql - PostgreSQL 中不同命令行提示符的含义?

SQL 架构设置

c# - 如何根据从查询中检索到的值生成 "if"?

sql - 选择没有唯一键的单行

使用 IN 与 NOT IN 时 Postgresql 的巨大性能差异

ruby-on-rails - 没有这样的文件或目录服务器是否在本地运行并接受 Unix 域套接字 "/tmp/.s.PGSQL.5432"上的连接?

SQL 语句插入 2 行而不是 1 行

python - 将 UTC 时间戳转换为正常日期和时间