繁体   English   中英

如何从Informix中的SELECT更新?

[英]How do I UPDATE from a SELECT in Informix?

我正在尝试使用另一个表中的数据进行更新。 我已经尝试过这个答案 (第二部分),但是它对我不起作用。 我收到语法错误的一般错误消息。

我也尝试过这种解决方案,并且也收到语法错误消息。

如果我尝试仅更新一列,则它可以工作:

UPDATE dogs
SET name = 
    (
        SELECT 'Buddy'
        FROM systables 
        WHERE tabid = 1
     );

但是我需要更新倍数列。 不幸的是,这不起作用:

UPDATE dogs
SET (name, breed) = 
    (
        SELECT 'Buddy', 'pug'
        FROM systables 
        WHERE tabid = 1
    );

Informix版本是12.10.FC8

您在子查询周围丢失了另外1套括号。 Informix手册中

子查询必须放在括号之间。 这些括号嵌套在紧跟等号(=)的括号内。 如果表达式列表包含多个子查询,则每个子查询必须用括号括起来,并用逗号()分隔连续的子查询:

 UPDATE ... SET ... = ((subqueryA),(subqueryB), ... (subqueryN)) 

以下示例说明了SET子句中子查询的用法:

 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
    )
  );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM