多表关联更新语句
update tbl1
set col_nm = (select a.col_nm from tbl2 a where a.col_cd = tbl1.col_cd)
上面这个语句就可以被执行,而且会自动按照匹配条件a.col_cd = tbl1.col_cd,查询出唯一符合的值,利用查询出来的值来更新tbl1.col_nm,
而如果用普通的update 语句习惯,省略了更新字段值检出语句的tbl1时即如下语句
update tbl1
set col_nm = (select a.col_nm from tbl2 a where a.col_cd = col_cd)就会报错:
SQL0811N The result of a scalar fullselect, SELECT INTO statement, or VALUES INTO statement is more than one row. SQLSTATE=21000
DB2的查询计划没有看到,但是预估应该跟它的语法对应有关系,postgre则会强制要求你不要写东西~
看来当DBTOOL升级到了一个程度之后,就会七搞八搞,一不小心就会踩到错误的小陷阱。