【问题标题】:The invalid relational operator in this query此查询中的无效关系运算符
【发布时间】:2018-12-04 09:49:21
【问题描述】:
select Bus_no, time
from reaches r
where r.bus_no = 127
having max (hault); 

当我尝试在 Oracle SQL Developer 中检查查询时,它显示错误为“无效的关系运算符”。

【问题讨论】:

  • Having 有点像应用于聚合结果(SUM、COUNT、MAX...)的 WHERE。你需要写例如具有 max(hault) > 100。您也需要 group by 子句,因为您正在聚合数据。

标签: oracle oracle-sqldeveloper


【解决方案1】:

“无效的关系运算符”表示查询中的谓词未解析为 SQL 条件。

例如,max(hault) 不是 的意思是“找到最大值为 hault 的行”,正如您可能想要的那样。 max(hault) 是一个表达式(在本例中为聚合函数),它返回 hault 的最大值。

值本身不能用作查询中的条件(在 where 或 having 子句中)。要成为有效条件,您必须应用关系运算符,例如比较运算符(=!=<>^=<<=>>=BETWEENNOT BETWEENLIKENOT LIKEREGEXP_LIKEIS NULLIS NOT NULL 等)或集合运算符(INNOT INEXISTS、@98765454@、@98765454@ @)。

SQL 条件参考: https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlqr/SQL-Conditions.html#GUID-857D67A8-9224-4C71-88A2-4869696F1A1C

关于 SQL 条件: https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/About-SQL-Conditions.html#GUID-E9EC8434-CD48-4C01-B01B-85E5359D8DD7

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2020-01-29
    • 2012-11-15
    • 2014-09-17
    • 2018-08-07
    • 2019-11-20
    相关资源
    最近更新 更多