2016-08-29 48 views
2

我有這樣的MySQL表:用NULL MySQL的乘法列,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,因爲我無法更改table1中的值。 謝謝!

+1

試試這個:'選擇 描述, 如果(QUANTITY是NULL或數量= 0,1,QUANTITY)作爲數量, EACH, (如果(QUANTITY是NULL或數量= 0,1,QUANTITY)作爲QUANTITY)*每個AS PRICE FROM table1' – Manish

回答

2

試試下面的查詢

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

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

SQL Fiddle