加入复杂的sql oracle选择查询

时间:2018-01-12 20:34:50

标签: sql oracle

我有一个复杂的查询,可以从历史记录和订单中选择产品ID值。

SELECT ProductID
FROM History h ( SELECT .....) LATEST
WHERE h.ProductId = LATEST.ProductID
AND ....
AND IsActive = true; 

这个查询太长了,所以我无法写出所有内容。但它返回一个这样的表:

ProdutID
--------
4654654
9879879
5465465
2132188
7894215
....

我想加入此产品ID结果另一个包含ProductId列的表。

SELECT * FROM MySecondTable;

ProductID   Color
---------   -----
4654654     red
9879879     blue
5465465     orange

如何加入这两个查询?

2 个答案:

答案 0 :(得分:0)

CTE是一种非常简单的方法:

with t as (<your query here>)
select t.*, t2.color
from t join
     MySecondTable t2
     on t.ProductId = t2.ProductId;

您也可以将join添加到原始查询的from子句中。

答案 1 :(得分:0)

你可以使用firts作为内连接表

  SELECT b.* 
  FROM MySecondTable b
  INNER JOIN (
      SELECT ProductID
      FROM History h ( SELECT .....) LATEST
      WHERE h.ProductId = LATEST.ProductID
      AND ....
      AND IsActive = true;
  ) t on t.ProductID = b.ProductID