我在oracle数据库中有两个表(fruit_cost和fruit_availability),详情如下:
fruit_cost看起来像这样:
fruit_name | fruit_cost
苹果|三十
橙色| 7
甜瓜| 14
fruit_availability看起来像这样:
fruit_name | fruit_availability
表是空的
是否有任何好的选择来获得这样的结果:
fruit_name | fruit_cost | fruit_availability
苹果| 30 |空值
橙色| 7 |空值
甜瓜| 14 |空
答案 0 :(得分:7)
您可以使用LEFT JOIN
加入表格。
LEFT 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) |
如果您需要帮助,请在此处学习联接语法,这是一个很棒的visual explanation of joins。
答案 1 :(得分:2)
Oracle语法:
select *
from fruit_cost fc, fruit_availability fa
where fc.fruit_name = fa.fruit_name (+);
SQL小提琴here。
答案 2 :(得分: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