一个sql语句出了问题,麻烦大神给看一下啊,
sql语句
select dd.* from (
select distinct rp.apply_id
from t_r_p rp
where rp.r_status != 1
and rp.apply_id not in(select di.apply_id
from t_d_i di
where di.deduct_type in (1, 2, 3)
and di.deduct_status = 3)
and rp.END_DATE < to_date('2017-07-24','yyyy-mm-dd')
)a
wher rownum <= 500 )dd where dd.rn>0 ;
在Oracle中执行报错:
SQL Error [933] [42000]: ORA-00933: SQL command not properly ended
java.sql.SQLSyntaxErrorException: ORA-00933: SQL命令没有正确结束
到底那个不对了?审查了好几遍,还是错误
肯定不对啊,首先,括号不对等,)a对应的集合的select不存在,其次500后面的括号是中文的,最后dd.rn>0,dd如果结果集来自rp,那么rp表中只有一个字段是aaply_id,a表字段补齐,并且查询集合rp中要包含a查询的字段 ,如下:
select dd.* from (
select 字段 from (
select distinct rp.apply_id,rp.字段
from t_r_p rp
where rp.r_status != 1
and rp.apply_id not in(
select di.apply_id from t_d_i di
where di.deduct_type in (1, 2, 3)
and di.deduct_status = 3
)
and rp.END_DATE < to_date('2017-07-24','yyyy-mm-dd')
)a
where rownum <= 500
)dd
where dd.字段>0 ;
在PLSQL中 执行一下,写错的地方回报红提示
SELECT
dd.*
FROM
((------------------加了一个括号
SELECT DISTINCT
rp.apply_id
FROM
t_r_p rp
WHERE
rp.r_status != 1
AND rp.apply_id NOT IN (
SELECT
di.apply_id
FROM
t_d_i di
WHERE
di.deduct_type IN (1, 2, 3)
AND di.deduct_status = 3
)
AND rp.END_DATE < to_date ('2017-07-24', 'yyyy-mm-dd')
) a where rownum <= 500 )dd-----------------中文括号改成英文括号
WHERE
dd.rn > 0;
他说SQL命令没有正确结束可能就是多一个括号或者少一个括号之类的
这种情况 就是括号的问题 好好检查一下 就会发现
检查“)a”与“)dd”前面对应的部分就知道了。
and di.deduct_status = 3)
多了个括号
不是,是少了前部的东西
SELECT dd.* FROM(SELECT a.* FROM ( select distinct rp.apply_id