我有这个查询需要更新
UPDATE pomhst hst
SET hst.ponot1 = hdr.poshp1
FROM pomhdr hdr
WHERE LENGTH(LTRIM(RTRIM(hst.poshp1))) > 0
AND hdr.postat = 3;
当我执行它时,它显示了这个错误
SQL 错误 [42601]:[SQL0199] 关键字 FROM 不是预期的。有效令牌:使用 SKIP WAIT WITH FETCH LIMIT ORDER WHERE OFFSET。 我不知道我的查询有什么问题
我尝试添加内部连接,但效果不佳。
有些数据库管理系统如
Oracle
, DB2
不允许语法
UPDATE a_table SET .. FROM another_table
不像他们中的一些人,例如Postgres
.
您可以使用包含
EXISTS
关键字的语法,如下面的语句
UPDATE pomhst hst
SET hst.ponot1 = hdr.poshp1
WHERE EXISTS ( SELECT 1
FROM pomhdr hdr
WHERE LENGTH(LTRIM(RTRIM(hst.poshp1))) > 0
AND hdr.postat = 3)
你可以使用 exists:
UPDATE pomhst hst SET hst.ponot1 = hdr.poshp1
WHERE exists (select * from FROM pomhdr hdr where LENGTH(LTRIM(RTRIM(hst.POSHP1))) > 0 AND hdr.POSTAT = 3;