MySQL обновить нулевые значения, если код продукта имеет значение - PullRequest
1 голос
/ 26 мая 2020

У меня есть этот запрос:

select * from warehouselog where productDescription is null;

Он возвращает мне это:

ProductCode     productDescription
PKFIL11014      null
PKOUT15012      null
PKLAB14016      null
PKLAB14005      null
PKPOL17024      null

Я знаю, что есть данные с этими кодами продуктов с некоторыми данными в той же таблице .

например,

PKLAB14005      blue pen
PKPOL17024      black pen

Как я могу обновить таблицу, где productDescription is null и установить productDescription на значение, в котором ProductCode содержит данные? Необязательно быть уникальным.

1 Ответ

2 голосов
/ 26 мая 2020

Используйте коррелированный подзапрос, присваивая минимальное или максимальное значение, найденное для продукта. Неважно, выберете ли вы MIN или MAX, оба будут искать значение, не равное нулю. Вот пример с MIN:

update warehouselog w
set productdescription =
(
  select min(productdescription)
  from (select * from warehouselog) w2
  where w2.productcode = w.productcode
)
where productdescription is null;

(from (select * from warehouselog) w2 вместо простого from warehouselog w2 необходимо в MySQL, потому что он не позволяет использовать обновленную таблицу непосредственно в подзапрос.)

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