2016-09-23 83 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

是的。谢谢 –

相关问题