2016-08-29 5 views
2

У меня есть этот MySQL таблица:столбцов умножения MySql с NULL и 0 строки

+----+-------------+----------+------+-------+ 
| ID | DESCRIPTION | QUANTITY | EACH | PRICE | 
+----+-------------+----------+------+-------+ 
| 1 | Product 1 |  1 | 12 | 1*12 | 
| 2 | Product 2 |  2 | 3 | 2* 3 | 
| 3 | Product 3 | NULL | 3 |  | 
| 4 | Product 4 |  0 | 7 |  | 
+----+-------------+----------+------+-------+ 

И этот запрос:

SELECT 
    DESCRIPTION, 
    QUANTITY, 
    EACH, 
    COALESCE(QUANTITY, 1) * EACH AS PRICE 
FROM table1 

Я хочу, чтобы заменить NULL и 0 с 1, и я хочу сделать умножение в столбце PRICE. Я не хочу использовать UPDATE, потому что я не могу изменить значения в таблице1. Спасибо!

+1

Попробуйте это: 'ВЫБОР ОПИСАНИЕ,, если (величина NULL, или количество = 0,1, количество), как количество, КАЖДОЙ, (если (величина NULL, или количество = 0,1, количество) в качестве величины) * КАЖДЫЙ КАК ЦЕНА ОТ table1' – Manish

ответ

2

Try Ниже запроса

SELECT 
    DESCRIPTION, 
    QUANTITY, 
    EACH, 
    COALESCE(IF(QUANTITY = NULL OR QUANTITY = 0,1,QUANTITY), 1) * EACH AS PRICE 
FROM table1 
+1

Работайте, спасибо! – ster

+0

Примите ответ, если он полезен. –

+0

'QUANTITY = NULL' не работает (по крайней мере, не так, как вы ожидаете: это никогда не будет так). Используйте 'QUANTITY IS NULL', тогда вы можете удалить' COALESCE'. – Solarflare

0

Это звучит, как вы хотите CASE:

SELECT DESCRIPTION, QUANTITY, EACH, 
     ((CASE WHEN QUANTITY IS NULL THEN 0 
       WHEN QUANTITY = 0 THEN 1 
       ELSE QUANTITY 
     END) * EACH 
     ) AS PRICE 
FROM table1; 
+0

не работайте этот код – ster