我正在尝试创建一个存储过程,根据相关表中的某些值更新一个表中的记录:
MainTable 包含一个状态字段,并与 SubTable 相关联,SubTable 也有一个状态字段。我需要更新 MainTable 中每条记录的状态,当相关的所有 SubTable 记录都具有相同的状态 x 时。我已经尝试了几个查询,但认为我的方法不正确。非常感谢任何协助。谢谢。
我正在尝试创建一个存储过程,根据相关表中的某些值更新一个表中的记录:
MainTable 包含一个状态字段,并与 SubTable 相关联,SubTable 也有一个状态字段。我需要更新 MainTable 中每条记录的状态,当相关的所有 SubTable 记录都具有相同的状态 x 时。我已经尝试了几个查询,但认为我的方法不正确。非常感谢任何协助。谢谢。
试试这个:
Update schema.yourtable s set s.fieldtoupdate = (
Select e.Relationalfield from schema.RealtionalTable e where e.STATUSFIELD = s.STATUSFIELD);
希望能有所帮助
Update MainTable SET MainTable.Status= ( Select e.SubTableStatus from SubTable e where e.SubTableStatus= 11);
基本上,如果SubTable.SubTableStatus中的所有记录都是11,则必须将MainTable.Status设置为9。错误提示是:“子查询返回多于一个值。当子查询跟随=、!=、<、<=、>或>=时,不允许这种情况,或者当子查询用作表达式时。” - pjdupreez举个例子,假设有以下表:
Producer ( Code,Name,Status)
Goods ( GCode,PCode( Producer Code),Name,Status)
查询:
Update Producer set Status=F
where not exists (select * from Goods where Status <> X and Goods.PCode= Producer.Code)