我在 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 | 空值
问问题
14932 次
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
结果是:
| 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 回答