3

我在 oracle 数据库中有两个表(fruit_cost 和fruit_availability),详细信息如下:

fruit_cost 如下所示:

fruit_name | fruit_cost
苹果|高分辨率照片| CLIPARTO 30
橙| 7
瓜 | 14

fruit_availability 看起来像这样:

fruit_name | fruit_availability
表是空

的,有什么好的选择可以得到这样的结果:

fruit_name | 水果成本 | fruit_availability
苹果 | 30 | 空
橙 | 7 | 空
瓜| 14 | 空值

4

3 回答 3

7

您可以使用LEFT JOIN.

ALEFT JOIN将返回表中的所有记录,fruit_cost而不管表中是否有匹配的记录fruit_availability。您的查询将如下所示:

select fc.fruit_name, 
  fc.fruit_cost,
  fa.fruit_availability
from fruit_cost fc
left join fruit_availability fa
  on fc.fruit_name = fa.fruit_name

请参阅带有演示的 SQL Fiddle

结果是:

| FRUIT_NAME | FRUIT_COST | FRUIT_AVAILABILITY |
------------------------------------------------
|      melon |         14 |             (null) |
|     orange |          7 |             (null) |
|      apple |         30 |             (null) |

如果您在学习连接语法时需要帮助,这里有一个很好的连接可视化解释

于 2013-01-16T20:27:09.983 回答
4

甲骨文语法:

select *
from fruit_cost fc, fruit_availability fa
where fc.fruit_name = fa.fruit_name (+);

SQL Fiddle在这里

于 2013-01-16T20:28:00.527 回答
0
select c.fruit_name, c.fruit_cost, a.fruit_availability
from fruit_cost c 
   left outer join on fruit_availability a on
   c.fruit_name = a.fruit_name
order by c.fruit_name
于 2013-01-16T20:27:40.660 回答