使用SQL确定相关表的所有记录是否具有相同的值

3

我正在尝试创建一个存储过程,根据相关表中的某些值更新一个表中的记录:

MainTable 包含一个状态字段,并与 SubTable 相关联,SubTable 也有一个状态字段。我需要更新 MainTable 中每条记录的状态,当相关的所有 SubTable 记录都具有相同的状态 x 时。我已经尝试了几个查询,但认为我的方法不正确。非常感谢任何协助。谢谢。


你的表是否通过“状态”字段链接? - Andrey Gordeev
2个回答

0

试试这个:

Update schema.yourtable s set s.fieldtoupdate = (
Select e.Relationalfield from schema.RealtionalTable  e where e.STATUSFIELD = s.STATUSFIELD);

希望能有所帮助


谢谢 Stanley,我尝试了你的查询,但没能让它起作用。我尝试了类似这样的方式(由于查询窗口中的错误,必须进行微调):Update MainTable SET MainTable.Status= ( Select e.SubTableStatus from SubTable e where e.SubTableStatus= 11);基本上,如果SubTable.SubTableStatus中的所有记录都是11,则必须将MainTable.Status设置为9。错误提示是:“子查询返回多于一个值。当子查询跟随=、!=、<、<=、>或>=时,不允许这种情况,或者当子查询用作表达式时。” - pjdupreez
你是说状态字段不是唯一值吗?为了使其工作,状态字段必须是唯一值。 - Stanley Mungai
不,状态并不是唯一的,但我已经得到了我想要的,谢谢。不过,我确实有一个不同的问题,你的代码可以帮助解决。 - pjdupreez
啊,好的。很高兴你得到了帮助。 - Stanley Mungai

0

举个例子,假设有以下表:

   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)         

1
谢谢!这似乎是我想要的!我只想做一些更多的测试来确保! - pjdupreez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接