У меня есть столбец discount_amount
, если нет SUM(discount_amount)
(NULL
) ТО ноль (0).
Я написал запрос с этим
SELECT COALESCE(SUM(discount_amount)
FROM order_discount
WHERE order_discount.discount_type_id = 6
AND order_discount.order_match_id = om1.id, 0);
но я получаю сообщение об ошибке
Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «FROM order_discount WHERE order_discount.discou» в строке 2.
Вы, кажется, хотите:
SELECT COALESCE(SUM(discount_amount), 0)
FROM order_discount
WHERE order_discount.discount_type_id = 6 AND order_discount.order_match_id = om1.id;
Это должно быть частью более крупного запроса, в котором каким-то образом определена производная таблица om1
.
В качестве альтернативы вы можете COALESCE()
получить результат подзапроса следующим образом:
COALESCE(
(
SELECT SUM(discount_amount)
FROM order_discount
WHERE order_discount.discount_type_id = 6 AND order_discount.order_match_id = om1.id
),
0
)
Опять же, это имеет смысл только в том случае, если оно включено в более крупный запрос.
@FachryDzaky: оба дают одинаковый результат. Но вы бы включили их по-разному во весь запрос (который вы не показали).
оба они дадут тот же результат, который я хочу, или это другой результат?