UPDATE
S
SET
(S.a,
S.b,
S.c)
=
(
SELECT
FS.a,
FS.b,
FS.c
FROM
(SELECT
T.a,
T.b,
T.c,
T.d,
T.e,
CASE
WHEN IS.a IS NULL THEN 'N'
ELSE 'Y'
END
FROM
t T
JOIN
y
ON(y.a = T.a)
) FS
WHERE
FS.a = S.e
AND FS.b = S.a
AND FS.c = S.b
AND FS.d = S.c
)
当我执行这个查询时,我得到了一个错误:
21:23:59 [UPDATE - 0 row(s), 0.000 secs] [Error Code: -811, SQL State: 21000] DB2 SQL Error: SQLCODE=-811, SQLSTATE=21000, SQLERRMC=null, DRIVER=3.50.152
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.000/0.000 sec [0 successful, 0 warnings, 1 errors]
你能解释一下根本原因吗.?
发布于 2009-09-14 21:35:04
所有DB2消息及其含义都可以在网上找到。
在您的情况下,根据SQL0811N的书面记录
以下原因之一导致了错误:
这意味着启动的select语句:
SELECT
FS.a,
FS.b,
FS.c
FROM ...
返回多行。这是不允许的,因为您试图在update语句中设置单个行的值。
https://stackoverflow.com/questions/1422478
复制相似问题