Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取ORA-00907:在左侧没有额外括号时缺少右括号_Sql_Oracle - Fatal编程技术网

Sql 获取ORA-00907:在左侧没有额外括号时缺少右括号

Sql 获取ORA-00907:在左侧没有额外括号时缺少右括号,sql,oracle,Sql,Oracle,以下是我的SQL查询: select hck.hacker_id, hck.name, cnt from ( Hacker as hck inner join ( Select hacker_id, count(challenge_id) as cnt from Challenges group by hacker_id ) chl_count on hck.hacker_id = chl_count.hacker_id )

以下是我的SQL查询:

select hck.hacker_id, hck.name, cnt
from (
    Hacker as hck 
    inner join (
       Select hacker_id, count(challenge_id) as cnt 
       from Challenges 
       group by hacker_id
    ) chl_count on hck.hacker_id = chl_count.hacker_id
) having cnt = max(cnt) or 
cnt in (select cnt 
        from chl_count 
        group by cnt 
        having count(hacker_id) = 1) 
order by cnt desc, hck.hacker_id asc;
这里有一个模式:

Hackers(name, hacker_id)
挑战也有模式

Challenges(hacker_id, ,challenge_id)

我没有看到查询中缺少任何括号。那么,怎么了?此外,其他语法(如逗号)也正确。

您似乎是Oracle SQL的新手

你不能这样做:…从黑客作为hck内部加入。。但你可以这样做:

WITH chl_count
     AS (  SELECT hacker_id, COUNT (challenge_id) AS cnt
             FROM Challenges
         GROUP BY hacker_id)
  SELECT hck.hacker_id, hck.name, cnt
    FROM Hacker hck INNER JOIN chl_count ON hck.hacker_id = chl_count.hacker_id
  HAVING    cnt = (select max(challenge_id) from Challenges)
         OR cnt IN (  SELECT cnt
                        FROM chl_count
                      WHERE hacker_id= 1)
ORDER BY cnt DESC, hck.hacker_id ASC;

现在应该可以使用了。

HAVING without GROUP BY?@Tejash,作为纯语法,您可以使用HAVING子句而不使用GROUP BY子句。作为逻辑,它可能取决于它是否正确。现在它给出了chl_count的错误*第9行的错误:ORA-00942:表或视图不存在,即使chl_count是there@ShantanuShinde哦你不能那样用。我将使用解决方案更新查询。我刚刚添加了with子句。它会帮助你的。为了更好地理解,请阅读相关内容。该错误已消失,但在第8行的SELECT cnt*错误中没有I get或cnt:ORA-00979:不是一个GROUP BY表达式,我认为Hacker中的错误括号。但你写的查询不正确。因为没有分组,MAXcnt也有。请用正确的结果编写您的测试用例。请提供一些示例输入数据和从该示例派生的预期输出。对您试图实施的业务规则的解释也不会出错。对您来说,告诉我们您想要做什么比从一些损坏的代码中逆向工程您的需求更容易。