【问题标题】:Query to fetch record from 2 tables with ignoring extra records [duplicate]查询从 2 个表中获取记录,忽略额外记录 [重复]
【发布时间】:2017-02-21 23:10:41
【问题描述】:

我有 2 个表格,格式如下

TableA                   TableB
Aid                      Bid  Month      value
1                        1    October    10
2                        1    November   11
3                        1    December   12
4                        2    November   13
5                        2    December   14 
                         3    September  15
                         3    October    16
                         4    December   17
                         5    September  18

使用以下查询

select Aid,Month,value from TableA join TableB on 
Aid=Bid where Month = 'December'

我会得到以下结果集

Aid    Month      Value
1      December   12
2      December   14
4      December   17

但我需要以下结果集

Aid       Month      Value
1         December   12
2         December   14
3         null       null
4         December   17
5         null       null

我的意图是我们需要返回,如果投标在多个月内,那么我们只需要返回 12 月的记录,如果投标不在 12 月,那么我们只需要显示该投标的单个空记录。

最后我们只需要 12 月的记录,如果没有 12 月的记录则返回空记录。

请帮忙。

【问题讨论】:

  • 这个问题本质上是完全重复的。为什么 Stack Overflow 找不到这些?

标签: sql oracle plsql oracle11g plsqldeveloper


【解决方案1】:

您正在寻找LEFT JOIN 而不是INNER JOIN

SELECT Aid,
       Month,
       value
FROM   TableA
       LEFT JOIN TableB
              ON Aid = Bid
                 AND Month = 'December' 

注意:您还需要将 filter 移动到 ON 条件,因为我们使用的是 LEFT JOIN 并且过滤列来自 LEFT 表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-01
    • 2018-04-26
    • 2018-01-25
    • 1970-01-01
    • 2018-04-15
    • 2021-08-20
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多