代码之家  ›  专栏  ›  技术社区  ›  Pramod

如何多次运行sql查询并将结果合并为单个输出?

  •  1
  • Pramod  · 技术社区  · 7 年前

    SELECT    
        a.objno,
        a.table_comment,
        b.queue_comment
    FROM
        aq$_queue_tables a 
    JOIN 
        AQ$_QUEUES b ON a.objno = b.table_objno
    WHERE
        a.objno = 19551;
    

    有没有什么方法可以用objno从一个列表或另一个表中馈送来在上面的SQL上编写循环?我还希望将每个循环运行的所有结果存储/生成为单个输出。

    我考虑了将数字上传到新表中并添加where条件的选项:

    a.objno=(SELECT newtab.objectno FROM newtab);
    

    但是,我将在查询中编写的逻辑将排除某些objectno结果。假设关联的objectno queue_comment 截止到与该对象相关联的某个日期。我不想扯到那张唱片。此条件将与某些objectno匹配,而与其他objectno不匹配。具有该条件并对所有objectno运行查询将返回0个结果。我无法分享最初的逻辑,因为它将揭示某些业务规则,这将违反某些策略。

    因此,我需要分别对每个objectno运行查询并合并结果。

    任何有帮助的主题的指导或参考链接也很受欢迎。

    提前谢谢你的帮助。

    2 回复  |  直到 7 年前
        1
  •  1
  •   vmaroli    7 年前

    一个选项是将对象号从Excel工作表上载到数据库中的表中,并按如下方式运行查询。假设newtab是上传objectno的表。

    SELECT    
    a.objno,
    a.table_comment,
    b.queue_comment
    
    FROM
        aq$_queue_tables a JOIN AQ$_QUEUES b on a.objno = b.table_objno
    WHERE
        a.objno IN (SELECT newtab.objectno FROM newtab);
    

    我在这里使用了一个子查询,加入aq$也可以工作。

        2
  •  0
  •   Ted at ORCL.Pro Marimuthu Palanisamy    7 年前

    IN也可以按以下方式使用:

    SELECT    
        a.objno,
        a.table_comment,
        b.queue_comment
    FROM
        aq$_queue_tables a 
    JOIN 
        AQ$_QUEUES b ON a.objno = b.table_objno
    WHERE
        (a.objno,a.table_comment,b.queue_comment) IN  (19551,'something','something');
    

    所以新的桌子是:

     WHERE
            (a.objno,a.table_comment,b.queue_comment) IN 
            (select n.objno, n.table_comment, n.queue_comment from new_table n)