当前位置: 首页 > 知识库问答 >
问题:

ORA-00907:使用order by和rownum=1时,子查询中缺少右括号

宰父淳
2023-03-14

您好,我有一个select查询,其中包含子查询中的列数据,以从其他表中获取按日期排序的第一个数据,如果子查询没有按语法排序,则工作正常。然而,当子查询使用order by时,它会给出缺少右括号的错误。

Select ...,
 A.number,
               (
                 SELECT L.created_by_user_id
                   FROM user_content L
                  WHERE ( 
                          L.content LIKE '%message%'
                          OR L.content LIKE '%response%'
                        ) 
                        AND L.number = A.number 
                        AND ROWNUM = 1
                        ORDER BY  created_by_date /* If this order by deleted, the query works well*/
               ) as first_user
FROM ...

我还尝试将rownum的查询分开,如下面的查询和order by it stills get错误无效标识符。

  Select ...,
  A.number,
  (select K.created_by_user_id from
                 (SELECT L.created_by_user_id
                   FROM user_content L
                  WHERE ( 
                          L.content LIKE   '%message%' 
                          OR L.content LIKE   '%response%'
                        ) 
                        AND L.number = A.number
                        ORDER BY created_by_date
                        ) K
                 where ROWNUM = 1) as first_user
  FROM ...

数据库引擎正在使用oracle,请提供帮助。非常感谢。

共有1个答案

吴英武
2023-03-14

我通过分离对rownum的查询并将数字移到上一个查询的位置来解决这个问题。至少查询工作正常,结果正确。但也许可以改进此查询的性能。

Select ...,
  A.number,
  (select K.created_by_user_id from
                 (SELECT L.created_by_user_id
                   FROM user_content L
                  WHERE ( 
                          L.content LIKE   '%message%' 
                          OR L.content LIKE   '%response%'
                        ) 
                        ORDER BY created_by_date
                        ) K
                 where ROWNUM = 1 AND L.number = A.number) as first_user
  FROM ...
 类似资料:
  • 问题内容: 创建表格订单时出现错误: ORA-00907:右括号缺失 问题答案: 如果要使用列定义内联定义外键,则不应指定FOREIGN KEY。从定义中删除它。 试试这个:

  • 这是我的密码。但我不知道使用11G速递版以来的错误在哪里。它显示错误,但不显示错误在哪一行

  • 当godownname和itemname匹配时,我想从表中获取最后可用的余额。 我试了一些代码。但是我对Oracle中的函数有一个问题。 我得到了错误: 严重:空java。sql。SQLSyntaxerRorexException:ORA-00907:oracle缺少右括号。jdbc。驾驶员t4cttiore。oracle的processError(t4cttiore.java:450) 。jdb

  • 我一直被告知我缺少一个右括号,但我没有看到,有人能指出吗?

  • 我尝试使用多个自定义字段显示结果,同时按第一个自定义字段(startdate)排序结果。我看到的建议让我尝试了以下方法: 问题是,如果没有meta_key参数,结果会默认过滤帖子的日期。当我添加meta_key参数对结果进行排序时,我得到的每一篇文章都有一个meta_key等于开始日期。通过添加这些meta_key参数,语句似乎完全忽略了meta_query数组中的条件。我如何让查询排序的开始日期

  • 我将查询写成, 这里是java代码, 但我有个例外,