如何在AS400中删除顶级N的DB2-SQL

时间:2014-03-03 08:24:38

标签: sql db2 fetch ibm-midrange delete-row

SELECT * FROM DB FETCH 100 ROW ONLY - >没关系。

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

3 个答案:

答案 0 :(得分:2)

FETCH FIRST仅xxx行

当您不需要完整的结果集时,基本上只是一个性能快捷方式。手册说:

  

select-statement中的fetch-first-clause规范   结果表为只读。只读结果表不能是   在UPDATE或DELETE语句中引用。 fetch-first-clause   不能出现在包含UPDATE子句的语句中。

这应该有效

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

答案 1 :(得分:1)

你可以试试这个: -

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

修改: -

你可以试试这个: -

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

答案 2 :(得分:0)

使用此表格:

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

不能使用{delete from(select ...}表单。表函数仅在子选择中有效,而不是DELETE。