эквивалентный запрос на обновление sql

#sql #tsql

#sql #tsql

Вопрос:

1)

 update m 
set long_description = is null(a.[value],' ')
  

Изменение на

  update m 
set long_description = CASE WHEN a.[name] = 'long description' THEN is null(a.[value],' ') END
  

Но запрос не обновляет значения, пожалуйста, помогите с правильным запросом с регистрацией

Комментарии:

1. Что такое СУБД?

2. Добро пожаловать в StackOverflow. Пожалуйста, добавьте к вашему вопросу тег, указывающий вашу СУБД (например, sql server), и отредактируйте вопрос, чтобы объяснить, какую логику вы хотели бы применить в вашем заявлении об обновлении.

3. is null не является функцией. На самом деле это правильный способ написания COALESCE() .

4. спасибо, но выполнение приведенных ниже запросов, дающих разные результаты, обновляет m set long_description = случай, когда a.name = ‘longdescription’ затем ОБЪЕДИНЯЕТСЯ (a. [значение],’ ‘) конец , цвет = случай, когда a.name = ‘color’ затем ОБЪЕДИНЯЕТСЯ (a. [значение],’ ‘) завершается из dbo. Media_Services как m, dbo.promo_Items как p, dbo. PROMO_ITEM_ATTRIBUTES в виде, где p.article_number = m.Item_Number и p.style_id = m.Master_ID и p.id = a.promo_item_id —и a.name в (‘longdescription’,’color’) ;

5. Вы имеете в виду isnull(a.[value],' ')

Ответ №1:

Не совсем ясно, чего вы хотите. В вашем первом примере вы обновляете Long_Description, чтобы оно было.value, если оно не равно null, и в этом случае вы вставляете пробел.

Во втором примере вы, похоже, говорите, если a.name имеет значение ‘Длинное описание’, только затем устанавливает значение Long_Description равным.value (если оно не равно null, в этом случае используйте пробел).

Вы пытаетесь это сделать (измените long_description на.value, если a.name совпадает с long_description)?

 update m 
set long_description = CASE WHEN a.[name] = long_description
                            THEN isnull(a.[value],' ') END
  

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

Комментарии:

1. update m устанавливает long_description = isnull(a.[значение],’ ‘) из dbo. AAA как m, dbo. BBB как p, dbo. CCC как a, где p.article_number = m.Item_Number и p.style_id = m.Master_ID и p.id = a.promo_item_id и a.[name] = ‘longdescription’ обновить m установить Color = isnull(a.[value],’ ‘) из dbo. AAA как m, dbo. BBB как p, dbo. CCC как a, где p.article_number = m.Item_Number и p.style_id = m.Master_ID и p.id = a.promo_item_id и a.[name] = ‘color’ у нас есть эти 2 запроса на обновление, теперь я пытаюсь объединить в один запрос

2. update m устанавливает long_description = случай, когда a.[name] = ‘longdescription’ тогда isnull(a.[значение],’ ‘) end , color = случай, когда a.[name] = ‘color’ тогда isnull(a.[значение],’ ‘) end из dbo. AAA как m, dbo. BBB как p, dbo. CCC как a, где p.article_number = m.Item_Number и p.style_id = m.Master_ID и p.id = a.promo_item_id ;

3. но не обновляется

4. виджай — добавьте свои данные в исходное сообщение. Это невозможно прочитать в комментариях. Кроме того, я не понимаю ваших комментариев.