我在尝试更新db2表的前100条记录时遇到了困难。我在Squirrel 3.5.0中运行查询
如果我这样做:
SELECT *
FROM "CUSTOMERS"
WHERE CITY = 'SAN JOSE'
FETCH FIRST 100 ROW ONLY
它适当地过滤数据,但当我这样做时:
UPDATE ( SELECT * FROM "CUSTOMERS" WHERE CITY = 'SAN JOSE' FETCH FIRST 100 ROWS ONLY )
SET NAME = 'MARIO', LASTNAME = 'PEREZ'
它抛出这个错误
Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=(;<IDENTIFIER> STATISTICS, DRIVER=3.53.95
SQLState: 42601
ErrorCode: -104
我遵循此链接http://db2guideonline.blogspot.com/2013/04/select-update-delete-n-number-of-rows.html中建议的方法
你能帮帮我吗?
谢谢
3条答案
按热度按时间7fhtutme1#
当你像这样更改更新时会发生什么。
注意:将表中的
customer_id
列改为identity
或Auto generated
列wvmv3b1j2#
就我所知,您的更新查询是有效的(您没有说明您使用的是哪个版本的db2,所以我假设是LUW 9.7或更高版本)。可能是squirrel向查询添加了一些东西,尝试取消选中限制squirrel接收行数的复选框。
如果你有唯一标识一行的东西(我假设这里是cust_id),你可以使用merge语句:
另一个选项是枚举表中的行,如下所示:
yvgpqqbh3#
如果表没有id,可以使用相对记录号。