Как преобразовать следующий оператор SQL в оператор обновления - PullRequest
0 голосов
/ 08 января 2020

Как преобразовать следующую SQL инструкцию в инструкцию Update:

select
    * 
from
    BomStructure BS
where
    Component = '322058-000000'
    and
    exists
    (
        select
            1
        from
            BomStructure
        where
            ParentPart = BS.ParentPart
            and
            Component = '322123-301200'
    );

Я хочу

update
    BomStructure BS
set
    StructureOffDate = '2019-09-30'
where 
    Component = '322058-000000'
    and
    exists
    (
        select
            1
        from
            BomStructure
        where
            ParentPart = BS.ParentPart
            and
            Component = '322123-301200'
    );

Но мой синтаксис выше неверен. Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 08 января 2020

Похоже, вам нужно обновить дату всех компонентов "322058-000000", родительская часть которых также имеет компонент "322123-301200". Если это так, следующий запрос должен помочь:

update BomStructure
set StructureOffDate = '2019-09-30'
where Component='322058-000000' and Parentpart in (select distinct Parentpart from BomStructure where Component = '322123-301200')
1 голос
/ 08 января 2020

Я думаю, что вы хотите:

update bs
      set bs.StructureOffDate = '2019-09-30'
from BomStructure bs
where exists (select 1 
              from BomStructure bs1
              where bs1.ParentPart = bs.ParentPart and bs1.Component = '322123-301200'
             );

Ваш внешний фильтр будет обновлять только те строки, где Component = '322123-301200', но в соответствии с запросом вы выглядите так, как будто вы хотите обновить ParentPart, в котором он имеет Component = '322123-301200'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...