我有一个复杂的查询,可以从历史记录和订单中选择产品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
如何加入这两个查询?
答案 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