【问题标题】:Filter a query in Oracle在 Oracle 中过滤查询
【发布时间】:2014-02-19 17:58:52
【问题描述】:

我有以下问题

select a.empid, a.age, a.city, b.name
  join supervisor b on a.supervisorid = b.empid

“主管”表中的条目可能不会作为员工出现在“员工”表中 形成上述查询后,如果“b.supervisorid”不在“a.empid”列中,我想将“b.supervisorname”字段设为“null”

员工表:

EMPID--年龄--城市--主管

1--12--A--123

2--21--B--1

3--23--C--2

主管表:

主管表

EMPID--名称

123--ABC

1--EFG

2-HIJ

输出:

EMPID--年龄--城市--名字

1--12--A--null

2--21--B--ABC

3--23--C--EFG

我不想用,

select a.empid, a.age, a.city, b.name
  from employee a
  join supervisor b on a.supervisorid =
                       (select empid
                          from supervisor
                         where empid in (select empid from employee))

因为这种查询会影响性能

有什么捷径吗?

【问题讨论】:

    标签: oracle


    【解决方案1】:

    您应该始终使用显式连接来避免性能问题。一般来说,它有助于在查询中定义 FROM 子句

    下面的查询应该适合你:

    select
        e.empid,
        e.age,
        e.city,
        s.name
    FROM
        employee e
        LEFT OUTER JOIN
            supervisor s
            on e.supervisor = s.empid
    

    【讨论】:

    • 这是正确的方法,必须完成! +1 删除我的!
    • @OracleUser 我当然感谢 +1 和评论谢谢!如果您在我之前先发布了 LEFT JOIN,那么我会简单地支持您:)
    猜你喜欢
    • 2022-01-03
    • 2015-11-14
    • 2017-10-30
    • 2018-05-27
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    相关资源
    最近更新 更多