我正在尝试使用另一个表中的数据进行更新。我已经尝试过这个答案(第二部分),但它对我不起作用。我收到一条语法错误的通用错误消息。
我也试过这个解决方案,也收到了一个语法错误消息。
如果我尝试只更新一列,它会起作用:
UPDATE dogs
SET name =
(
SELECT 'Buddy'
FROM systables
WHERE tabid = 1
);
Run Code Online (Sandbox Code Playgroud)
但我需要更新倍数列。不幸的是,这不起作用:
UPDATE dogs
SET (name, breed) =
(
SELECT 'Buddy', 'pug'
FROM systables
WHERE tabid = 1
);
Run Code Online (Sandbox Code Playgroud)
Informix 版本是 12.10.FC8
您在子查询周围缺少 1 组括号。从Informix 手册:
子查询必须用括号括起来。这些括号嵌套在紧跟在等号 ( = ) 之后的括号内。如果表达式列表包含多个子查询,则每个子查询必须用括号括起来,并用逗号 ( , ) 分隔连续的子查询:
Run Code Online (Sandbox Code Playgroud)UPDATE ... SET ... = ((subqueryA),(subqueryB), ... (subqueryN))以下示例显示了 SET 子句中子查询的使用:
Run Code Online (Sandbox Code Playgroud)UPDATE items SET (stock_num, manu_code, quantity) = ( ( SELECT stock_num, manu_code FROM stock WHERE description = 'baseball' ), 2 ) WHERE item_num = 1 AND order_num = 1001; UPDATE table1 SET (col1, col2, col3) = ( ( SELECT MIN (ship_charge), MAX (ship_charge) FROM orders ), '07/01/2007' ) WHERE col4 = 1001;
因此,为了让 Informix 接受您的更新,它必须是:
UPDATE dogs
SET (name, breed) =
(
(
SELECT 'Buddy', 'pug'
FROM systables
WHERE tabid = 1
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2122 次 |
| 最近记录: |