具有公用表表达式的删除查询(“ WITH AS”子句)

问题描述 投票:0回答:1

我正在尝试从oracle数据表中删除41.6%的旧行(senstrig是日期格式):

DELETE FROM
    (WITH RS AS (SELECT * FROM OLD_WIFISIGN WHERE SENSID= 1 ORDER BY SENSTRIG ASC))
WHERE ROWNUM <= (SELECT COUNT (*)/ 2.4 FROM RS);

但返回错误:

ORA-00928缺少SELECT

我已经尝试过多个版本,但是没有运气。

您能帮我怎样使这个“删除自”运行中?

sql oracle common-table-expression sql-delete
1个回答
0
投票

WITH放在DELETE之前:

WITH RS AS (SELECT * FROM OLD_WIFISIGN WHERE SENSID= 1 ORDER BY SENSTRIG ASC)
DELETE FROM OLD_WIFISIGN 
WHERE ROWNUM <= (SELECT COUNT (*)/ 2.4 FROM RS);

还是有点奇怪,命令的目的是什么?

© www.soinside.com 2019 - 2024. All rights reserved.