SQL 查询连接两个表的结果但还包括在另一个表中没有对应行的行?

标签 sql database oracle

给定两个表 APPLE 和 ORANGE,

NAME      APPLES
Alice     5
Bob       10
Trudy     1

NAME      ORANGES
Bob       50
Trudy     10
Dick      10

如何编写 JOIN 来显示表:

NAME      APPLES      ORANGES
Alice     5           -
Bob       10          50
Trudy     1           10
Dick      -           10

我现在有

SELECT a.NAME, APPLES, ORANGES
FROM APPLE a
JOIN
ORANGE o ON o.NAME = a.NAME

但这只会返回在 APPLE 和 ORANGE 中都有值的字段。

最佳答案

SELECT COALESCE(a.NAME, b.NAME) as NAME, APPLES, ORANGES 
FROM APPLE a 
FULL OUTER JOIN ORANGE o ON o.NAME = a.NAME 

关于SQL 查询连接两个表的结果但还包括在另一个表中没有对应行的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9894691/

相关文章:

sql - 如果数据跨越多个表,SQL Server 是否可以在不修改查询的情况下自动从多个表中读取?

database - Neo4j 的数据建模工具

java - 将 To_TimeStamp 函数转换为 java

java - jooq 为 Oracle 返回没有时间的日期

iphone - iPhone上的sqlite删除问题

sql - SQL 语句中不允许的本地集合类型

java - 准备好的语句有不同数量的 where 子句

sql - 拆分并计算与分隔符合并的值

mysql - 大表慢SQL,按时间戳过滤(int12)

java - Redis与数据库通信