关于连接和子查询

时间:2012-07-11 18:02:01

标签: sql db2

我在下面查询我正在使用..

select  * from app_subsys_param where assp_name like '%param_name%'

其中param_name是参数的名称。从这个查询中我们将获得与参数对应的assp_id。使用此id,我们会查找app_subsys_parmval表以获取参数的值。

 update app_subsys_parmval  set aspv_value = 'true' where assp_id = id_val

现在不是单独启动两个sql语句,而是想要将它们两者合并,因为有一个子查询或连接机制可以在一个语句中组合它们,请指教

3 个答案:

答案 0 :(得分:2)

您需要使用UPDATE .. FROM语法:

UPDATE app_subsys_paramval
SET aspv_value = 'true'
FROM app_subsys_param
WHERE app_subsys_param.id = app_subsys_paramval.id
    AND app_subsys_param.value LIKE '%param_name%';

答案 1 :(得分:1)

在更新声明中使用子选择:

UPDATE app_subsys_parmval  
SET aspv_value = 'true' 
WHERE id_val = (SELECT assp_id 
                FROM app_subsys_param 
                WHERE assp_name LIKE '%param_name%')

请注意,我假设您*的{​​{1}}内有什么内容。

答案 2 :(得分:1)

查看MERGE语句。这是UPDATE … FROM的ANSI SQL:2003标准。

文档:

  • MERGE用于DB2 for Linux / UNIX / Windows
  • MERGE用于DB2 z / OS 9.1