2016-09-23 118 views
0

幫助。 T_T從table1連接table2中選擇id,table1.column1 + table2.column2作爲總數。如果table2.column2沒有價值呢?

表1

+---------------+---------+-------------------+ 
| allowances_id | desc_id | column1   | 
+---------------+---------+-------------------+ 
|    1 |  1 | 64055.35594866848 | 
|    2 |  4 | 55627.97197247496 | 
|    3 |  6 | 55627.97197247496 | 
|    4 |  7 | 55627.97197247496 | 
|    5 |  8 | 55627.97197247496 | 
|    6 |  9 | 55627.97197247496 | 
|    7 |  2 | 50293.50333209634 | 
+---------------+---------+-------------------+ 

表2

+---------+-------+ 
| desc_id | total | 
+---------+-------+ 
|  1 | 18150 | 
|  4 | 18150 | 
|  6 | 18150 | 
|  7 | 18150 | 
|  8 | 18150 | 
|  9 | 18150 | 
+---------+-------+ 

我想table1.column1 + table2.total

表1(desc_id具有2在表2 desc_id的值沒有值2所以基本上結果應該是列1 + 0.00

+0

請提供您已經嘗試做的以及爲什麼它不起作用。 – Dmytrechko

+0

不要害怕嘗試'選擇599 + null' ......它不會咬你。 – Drew

+0

帶有內部連接模式的更新也不會加入id 2,因此更新不會發生。 – Drew

回答

1
SELECT t1.column1 + COALESCE(t2.column2, 0) 
FROM table1 t1 
LEFT JOIN table2 t2 
    ON t1.id = t2.id 
+0

如果t2返回一個空集,該怎麼辦?那麼你發佈的查詢將返回一個空集 –

0

似乎我想念理解。如果在創建時爲列添加了非空值,則空值和空值應該被存儲爲0.

+0

都是相同的類型。如果表2中的列返回一個空集,我希望該值爲0,這樣該公式仍然有效。導致在這些設置中會返回空集 –

+0

您可以告訴表的創建命令,也是插入命令。 –

+0

已經完成。無論如何,tnx。我在代碼中所做的是,我使用連接不加入 –

0

如果您認爲您的值也可以爲null,則可以在sql中使用ISNULL。

table1.column2 + ISNULL(table2.column2,0) 
+0

的值不爲空。它是一個空集。就像沒有ID匹配table1那麼基本沒有。 如果另一列返回一個空集,它將被設置爲默認值0,這樣column1中的值將是方程 –

+0

的值,那麼您應該使用左連接 –

+0

是的。謝謝 –

相關問題