【问题标题】:Select view columns from subselect (oracle, sql)从子选择中选择视图列(oracle,sql)
【发布时间】:2018-09-01 22:32:55
【问题描述】:

我得到了选择:

select c.ColA, c.ColB, c.ColC, c.ColD from table1 c
where c.ColB in (
                select colX from table2 where colZ in ('test', 'test2') and colV = 3
                );

我怎样才能同时显示来自 table2 的 ColV

当我这样做时:

c.ColB in (select colX, colV from table2 where colZ in ('test', 'test2') and colV = 3)

我收到错误:00913. 00000 - “值太多”

【问题讨论】:

    标签: sql oracle select subquery oracle12c


    【解决方案1】:

    在这种情况下,您需要进行内部连接:

    SELECT c.colA, c.colB, c.colC, c.colD, c2.colV
      FROM table1 c INNER JOIN table2 c2
        ON c.colB = c2.colX
     WHERE c2.colZ IN ('test', 'test2')
       AND c2.colV = 3;
    

    根据经验,当您需要另一个表中的列时,请使用JOIN 条件;不使用时使用EXISTSIN

    希望这会有所帮助。

    附:限定符 INNER 是不必要的,但我喜欢它,因为它使事情变得明确。

    【讨论】:

    • 很好的解释@David,我现在完全理解了,非常感谢您的快速回复!
    • 如果对您有帮助,请采纳。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 2019-04-04
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2021-03-27
    • 2018-06-14
    相关资源
    最近更新 更多