UPDATE с возвращением подзапроса EMPTY / NULL MYSQL - PullRequest
2 голосов
/ 26 мая 2020

У меня есть эта база данных:

  • таблица 1 Товары: id, name, total_sales

  • таблица 2 Products_sales: id_product, id_user, price

Я хочу обновить столбец «total_sales», используя этот запрос

UPDATE products p SET total_sales = (SELECT SUM(price) AS totalPrice
FROM `products_sales` WHERE id_product = p.id GROUP BY id_product)

Но если один продукт не продается, я получаю эту ошибку:

#1048 - Column 'total_sales' cannot be null

Как избежать этой ошибки, если у продукта нет продаж?

Может быть, использовать запасное значение?

1 Ответ

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

В качестве запасного варианта вы можете использовать ноль с COALESCE

UPDATE
    products AS p
        INNER JOIN (
        SELECT id_product, COALESCE(SUM(price), 0) AS totalPrice
        FROM `products_sales`
        GROUP BY id_product
    ) AS pSub ON p.id = pSub.id_product
SET p.total_sales = pSub.totalPrice;
...