繁体   English   中英

在一个查询下将SQL查询结果与另一个查询语句结合在一起? (复杂)

[英]Combine SQL query result with another query statement under one query? (Complicated)

我目前想将两个SQL查询合并为一个。 这有点类似于SQL:获取查询结果,然后另一个使用它-Combine 假设有两个查询:

SQL语句

1.) SELECT * 
    FROM (SELECT B.example1  
          FROM EXAMPLE1A A  
          INNER JOIN EXAMPLE1B B ON A.ID = B.ID  
          WHERE A.ABC ='ABC' 
          ORDER BY A.ORDER_BY ) as colstate

2.) SELECT colstate 
    FROM EXAMPLE_TABLE 
    WHERE EFG LIKE '%' 
      AND BGTHAN >= '1' 
      AND SMTHAN <= '100' 
    ORDER BY ORDER_BY ASC

我想将查询1.)中的结果用作查询2.)中的colstate(列语句)。 但:

我试过的是:

SELECT (SELECT B.example1  
        FROM EXAMPLE1A A  
        INNER JOIN EXAMPLE1B B 
           ON A.ID = B.ID  
        WHERE A.ABC ='ABC' 
        ORDER BY A.ORDER_BY ) 
FROM EXAMPLE_TABLE 
WHERE EFG LIKE '%' 
  AND BGTHAN >= '1' 
  AND SMTHAN <= '100' 
ORDER BY ORDER_BY ASC

原来是错误:标量子查询只允许返回一行 ,我该如何将“ =”替换为“ IN”? 还是我的说法完全错误?

该错误表明您用作列语句的查询最多只能返回一行。

它可能看起来像这样:

SELECT (SELECT B.example1  
        FROM EXAMPLE1A A  
        INNER JOIN EXAMPLE1B B 
           ON A.ID = B.ID  
        WHERE A.ABC ='ABC' 
          AND A.SOME_COLUMN = E.SOMECOLUMN // retrieve only relevant data for this row
        ORDER BY A.ORDER_BY ) 
FROM EXAMPLE_TABLE E 
WHERE EFG LIKE '%' 
  AND BGTHAN >= '1' 
  AND SMTHAN <= '100' 
ORDER BY ORDER_BY ASC

“将两个查询合并为一个”-这不是一个很好的规范。 尝试找出要作为FLAT二维表真正获得的内容,将嵌套SELECT视为嵌套循环,其中内部循环只能为父行设置单个值。 像这样:

[Outer loop - parent row]
    [Inner loop - children rows]
        // all you can do here is change a single parent's field to anything
        // like constant/sum/avg/topmost/ugly-subquery-returning-a-single-result
    [/Inner loop]
[/Outer loop]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM