0

我有两张桌子。

表格1:

-------------------------------
| product_id | product number |
-------------------------------
|    1001    |   67E432D      |
|    1002    |   888CDE32     | 
|    1003    |   54D32EC2     |
-------------------------------

表2:

--------------------------
| product_id |   desc    |
--------------------------
|  1001      | product 1 |
|  1003      | peoduct 3 |
--------------------------

加入表 1 和表 2 后,我得到以下结果。

-------------------------------------------
| product_id | product number |   desc    |
-------------------------------------------
|    1001    |   67E432D      | product 1 |
|    1002    |   888CDE32     |           |
|    1003    |   54D32EC2     | product 3 |
-------------------------------------------

现在您可以看到产品 3 的“desc”列现在是空的。我怎么可能在该列中有一个 0?就像是:

-------------------------------------------
| product_id | product number |   desc    |
-------------------------------------------
|    1001    |   67E432D      | product 1 |
|    1002    |   888CDE32     |     0     |
|    1003    |   54D32EC2     | product 3 |
-------------------------------------------

可能有一些功能可以完成这项工作,但我想我还没有意识到这一点。

4

2 回答 2

4

听起来你只是想使用NVL

SELECT product_id, product_number, NVL( desc, '0' )
  FROM table_1
       LEFT OUTER JOIN table_2 USING (product_id)
ORDER BY product_id

SQLFiddle 演示

于 2013-05-29T09:53:20.833 回答
1

由于这个问题被标记为Oracle,贾斯汀的回答很好。

如果您关心可移植性,请考虑使用coalesce:基于贾斯汀的回答:

SELECT product_id, product_number, coalesce( desc, '0' )
  FROM table_1
       LEFT OUTER JOIN table_2 USING (product_id)
ORDER BY product_id

至于区别,看这里

于 2013-05-29T10:51:20.743 回答