【问题标题】:Oracle parameter to a inner query内部查询的 Oracle 参数
【发布时间】:2013-02-02 00:07:59
【问题描述】:

我正在为 Oracle 查询而苦苦挣扎。我想向内部查询发送一个值,但没有成功。我的查询如下所示:

SELECT * FROM Pro u 
LEFT JOIN (SELECT * FROM PROLOG d
WHERE d.Id = (SELECT MAX(Id) FROM PROLOG t
          WHERE t.Project = **u.Id** 
          AND t.Prodstatus IN    (5,40)))z ON (u.ID = z.Project)
WHERE u.Id = 22;

我想将 u.Id 替换为 22。值 22 来自 Pro u 表。请给我一些提示。

【问题讨论】:

    标签: oracle oracle9i


    【解决方案1】:

    我不相信您可以将联接与内联视图相关联,但是您可以将 SQL 语句简化为具有相关谓词的简单外联接:

    SELECT * 
    FROM pro u 
    LEFT OUTER JOIN prolog d 
        ON d.project = u.id
        AND d.Id = (SELECT MAX(Id) 
                        FROM prolog t
                        WHERE t.project = u.id
                        AND t.prodstatus IN (5,40))
    WHERE u.id = 22;
    

    【讨论】:

      【解决方案2】:

      您不需要将该值传递给来自Pro 表的子查询,您可以使用prolog 表值

      SELECT * FROM Pro u 
      LEFT JOIN (SELECT * FROM PROLOG d
      WHERE d.Id = (SELECT MAX(Id) FROM PROLOG t
                WHERE t.Project = d.Project 
                AND t.Prodstatus IN    (5,40)))z ON (u.ID = z.Project)
      WHERE u.Id = 22;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-16
        • 1970-01-01
        相关资源
        最近更新 更多