在 ORACLE

问题描述

我有三个表:temp、product 和 Feed。 我会举例说明:

select ri.id from temp ri
inner join product i on ri.id = to_char(i.val)
inner join Feed f on f.product_id = i.product_id
where i.status = 'Finished'
and f.type = 'Type'
group by f.Feed_id,ri.id
having COUNT(f.status = 'SUCCESS') < 1;

所以我尝试从 temp 获取所有具有 f.type = 'Type' 的 ID。问题是,对于一个 Feed.Feed_id 可以是多行,因为我可以重新触发它 5 次,假设它崩溃了 4 次,但在第 5 次尝试时它是 SUCCESS,所以对于一个 Feed.Feed_id,我会有 5 行,只有一行带有 f.status = SUCCESS

我在此查询中收到的错误ORA-00907: missing right parenthesis,这让我很困惑。

Feed tableFeed_idstatustype 我对所有 Feed_id 都没有兴趣,status='SUCCESS'

一个 type='TYPE' 都没有

解决方法

您不能在 Oracle 中使用 COUNT 布尔表达式,您可以使用 const ulList = document.getElementById("ul-le"); var nodes = Array.from( ulList.children ); console.log(nodes[nodes.length - 1]); 表达式代替,例如

<ul id="ul-le">
    <li class="ball" data-rollid="3928081">
      <span class="red">2</span>
      </li>
      <li class="ball" data-rollid="3928082">
        <span class="red">5</span>
       </li>
</ul>

当条件为假时,此表达式返回 CASE,因此它只会计算条件为真的行(因为表达式的 HAVING COUNT(CASE WHEN f.status = 'SUCCESS' THEN 1 END) < 1 忽略 NULL 值)。

还要注意(正如@GordonLinoff 在评论中指出的那样),由于 COUNT 不能返回负数,因此简单地将结果与 0 进行比较会更清晰(并且效率更高),而不是小于 1:

NULL