大佬不秃头 2022-08-12 16:58 采纳率: 78.9%
浏览 103
已结题

运行sql后提示缺失右括号问题

select loginCount, activeCount from ( select count(1) activeCount from PW_DOC_RECORD a left join PW_EMP p on a.USER_ID = p.EMP_ID where EXISTS( select 1 from PW_DOC_RECORD b AND b.DOC_RECORD_CTIME like '%'||?||'%' AND b.DOC_RECORD_TYPE = ? and a.USER_ID = b.USER_ID ) and p.EMP_SEX = ? AND a.DOC_RECORD_CTIME like '%'||?||'%' AND a.DOC_RECORD_TYPE = ? AND a.DOC_TYPE = ? ) active, ( select count(1) loginCount from PW_DOC_RECORD c where 1=1 AND c.DOC_RECORD_CTIME like '%'||?||'%' AND c.DOC_RECORD_TYPE = ? ) login

运行上述sql提示nested exception is java.sql.SQLSyntaxErrorException: ORA-00907: 缺失右括号

  • 写回答

5条回答 默认 最新

  • 於黾 2022-08-12 17:19
    关注

    语法错误一大堆,括号不成对,缺where子句,like后面的内容不在引号里面
    不一一列举了
    告诉你个简单的办法去捋清楚自己的sql:
    不管写多复杂的嵌套,要嵌套之前先补个完整的()在那放着,把外层的select写完整了,再研究内部的select
    就这样一层一层的写,不确定的可以先放放,但是结构不要破坏了,回头再补
    最忌讳先写半个括号,然后剩下半个括号不知道该写在那一层,那就全乱套了
    引号也一样,先把正反引号写全了,然后再在引号之间写内容,不要先写一个引号

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 快乐鹦鹉 2022-08-12 17:01
    关注

    仔细检查一下括号的配对情况啊

    评论
  • 石岩Maple 2022-08-12 17:04
    关注

    img


    缺不缺右括号我倒是没看出来,但是你这个like语句,好像不大对,按道理应该是'%||?||%'

    评论
  • LiuDuanWu 2022-08-12 17:07
    关注

    img


    有点复杂 我给整理一下你自己看

    
    
    SELECT  loginCount, activeCount 
    FROM  
    ( SELECT  count(1) activeCount 
        FROM  PW_DOC_RECORD a LEFT  JOIN  PW_EMP p 
            ON  a.USER_ID = p.EMP_ID WHERE  
                EXISTS( SELECT  1 FROM  PW_DOC_RECORD b 
                        AND b.DOC_RECORD_CTIME LIKE  '%'||?||'%' 
                        AND b.DOC_RECORD_TYPE = ? 
                        AND  a.USER_ID = b.USER_ID ) 
                        AND  p.EMP_SEX = ? 
                        AND a.DOC_RECORD_CTIME LIKE  '%'||?||'%' 
                        AND a.DOC_RECORD_TYPE = ? 
                        AND a.DOC_TYPE = ? ) active, 
                            ( SELECT  count(1) loginCount FROM  PW_DOC_RECORD c 
                                   WHERE  1=1 
                                   AND c.DOC_RECORD_CTIME LIKE  '%'||?||'%' 
                                   AND c.DOC_RECORD_TYPE = ? ) 
                                       loginselect loginCount, activeCount FROM 
                                            ( SELECT  count(1) activeCount FROM  PW_DOC_RECORD a 
                                                LEFT  JOIN  PW_EMP p on a.USER_ID = p.EMP_ID 
                                                    WHERE  EXISTS
                                                        ( SELECT  1 FROM  PW_DOC_RECORD b 
                                                            AND b.DOC_RECORD_CTIME like '%'||?||'%' 
                                                            AND b.DOC_RECORD_TYPE = ? and a.USER_ID = b.USER_ID ) 
                                                            AND p.EMP_SEX = ? 
                                                            AND a.DOC_RECORD_CTIME LIKE  '%'||?||'%' 
                                                            AND a.DOC_RECORD_TYPE = ? AND a.DOC_TYPE = ? ) active, 
                                                                ( SELECT  count(1) loginCount FROM  PW_DOC_RECORD c 
                                                                    WHERE  1=1 
                                                                    AND c.DOC_RECORD_CTIME like '%'||?||'%' 
                                                                    AND c.DOC_RECORD_TYPE = ? ) login
    
    评论
  • 为梦想增值 2022-08-12 17:09
    关注
    
    SELECT
        login.loginCount,
        active.activeCount 
    FROM
        (
        SELECT
            count( 1 ) activeCount 
        FROM
            PW_DOC_RECORD a
            LEFT JOIN PW_EMP p ON a.USER_ID = p.EMP_ID 
        WHERE
            EXISTS (
            SELECT
                1 
            FROM
                PW_DOC_RECORD b          
                AND b.DOC_RECORD_CTIME LIKE '%' ||?|| '%' 
                AND b.DOC_RECORD_TYPE = ? 
                AND a.USER_ID = b.USER_ID 
            ) 
            AND p.EMP_SEX = ? 
            AND a.DOC_RECORD_CTIME LIKE '%' ||?|| '%' 
            AND a.DOC_RECORD_TYPE = ? 
            AND a.DOC_TYPE = ? 
        ) active,
        (
        SELECT
            count( 1 ) loginCount 
        FROM
            PW_DOC_RECORD c 
        WHERE
            1 = 1 
            AND c.DOC_RECORD_CTIME LIKE '%' ||?|| '%' 
        AND c.DOC_RECORD_TYPE = ? 
        ) login
    
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 已采纳回答 10月8日
  • 创建了问题 8月12日

悬赏问题

  • ¥50 burgers方程求逆
  • ¥15 matlab最小二乘法拟合非线性曲线提问
  • ¥15 电脑锁屏时vba运行SAP,excel数据不能复制到SAP
  • ¥50 74LS系列 74LS00 74LS04设计一个RS485电路(关键词-差分)
  • ¥30 各位help写一下代码
  • ¥15 在运行SDEdit模型下载不了
  • ¥15 求51控制l298n驱动的小车中超声波避障怎么写
  • ¥15 电脑连上WIFI却用不了
  • ¥30 MATLAB在RLC电路的固有响应和阶跃响应GUI仿真报告
  • ¥15 hyper-v出现的问题