sql - 找不到 ORA-00907:缺少右括号
问题描述
我不知道这种语法有什么问题。
SELECT Count (id_conv) AS NUM_CAMP
FROM csd_mx_mae_camp_dro
WHERE id_conv = (SELECT id_conv
FROM csd_mx_mae_conv_dro
WHERE num_cta = 60385300500)
AND id_cncpt = (SELECT A.id_cncpt
FROM csd_mx_mae_camp_dro A
INNER JOIN csd_mx_mae_cncpt_dro B
ON A.id_cncpt = B.id_cncpt
WHERE ( ( flg_tipo_camp = 'A'
AND txt_nombr_clase_logic IS NOT NULL )
OR ( flg_tipo_camp = 'C' ) )
AND txt_nom NOT IN ( 'Concepto' )
AND B.txt_cve = '84'
AND A.id_conv = (SELECT id_conv
FROM csd_mx_mae_conv_dro
WHERE num_cta = 60385300500)
AND rownum = 1
ORDER BY id_cmp)
AND flg_tipo_camp = 'A';
考虑到我在数据库中的记录,预期的结果是 4,但是我有标题中提到的错误(ORA-00907:缺少右括号 00907。00000 -“缺少右括号”*原因:*操作:错误行:171,列:90)。
解决方案
有一些子查询ORDER BY
是有意义的——而且它是语法允许的。
但是,您ORDER BY
在标量子查询中使用 - 需要返回单个值(一行/一列),并且此类子查询不允许ORDER BY
.
无论如何您都在错误地使用它(很可能) - 您通过条件将行数限制为 1 ROWNUM = 1
,这与您的ORDER BY
可能意味着您想要排序ID_CMP
,然后从结果中获取第一行。这不是它的工作原理。无论如何分配之后ORDER BY
才会出现。如果那是您尝试做的事情,请删除以及条件 on ,而是在标量子查询的子句中选择。 ROWNUM
ORDER BY
ROWNUM
MIN(ID_CMP)
SELECT
有关缺少右括号的特定错误是由该ORDER BY
子句引起的:此时,在标量子查询中,解析器期望子查询的右括号,而不是任何其他标记/子句/其他任何内容。
推荐阅读
- javascript - 元素的PHP动态id属性
- mongodb - Mongo DB 中的日期格式错误
- python - 数据框行之间的计算
- javascript - Javascript使用while循环查找和替换函数
- r - 在 RShiny 中,当 downloadHandler 中缺少预期文件时,使用 renderPrint/renderText 显示错误
- visual-studio - 为什么 VS2019 的 Go To Implementation 会显示重复的引用?
- r - 如何在 R 中获得单面 HP 过滤器
- python - 将图像旋转到直线方向
- firebase - react native删除后如何重新加载页面
- javascript - Javascript - 更改按钮文本不起作用