繁体   English   中英

DB2-SQL如何在AS400中删除前N个…

[英]How to do DB2-SQL delete top N … in AS400

SELECT * FROM DB FETCH 100 ROW ONLY >确定。

delete from DB FETCH 100 ROW ONLY ->为什么不delete from DB FETCH 100 ROW ONLY

仅获取第一个xxx行

当您不需要完整的结果集时,基本上只是性能捷径。 该手册说:

在选择语句中指定提取优先子句使结果表为只读。 只读结果表不得在UPDATE或DELETE语句中引用。 提取优先条款不能出现在包含UPDATE子句的语句中。

这应该工作

DELETE FROM mytbl
WHERE pk IN (SELECT pk FROM mytbl
             FETCH FIRST 100 ROWS ONLY
            )

您可以尝试以下方法:

DELETE FROM (SELECT * FROM DB FETCH 100 ROWS ONLY) 

编辑:-

您可以尝试以下方法:

DELETE FROM (SELECT * FROM "BACKUPLIB/SCDKISLOG3" FETCH 100 ROWS ONLY)

使用以下形式:

delete from mytable a where rrn(a) in 
(select rrn(b) from mytable b fetch first 100 rows only)

无法使用{从(选择...)删除。”表函数仅在子选择中有效,而在DELETE中无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM