我有一堆相互依赖的查询,我想使用第一个在另一个中返回的值。例如,我想使用第一个查询的产品ID:
SELECT ProductID,
FROM mproducts
WHERE (ProductCode='$(product)'
or ProductCode='$(product)'
or BuildSysProductCode='$(product)');
在第二个
SELECT ProductVersionID,
FROM cb_mproductversions
WHERE ProductID=***variableName***
go
我查看了变量,并且我已经看到了一些将值存储到变量中的方法,比如执行
DECLARE @variableName
SELECT @variableName AS productID
FROM mproducts
...
但似乎@variableName的范围只是下一个select语句,当我到达DECLARE之后的那个语句之后,它表示它没有被声明。
答案 0 :(得分:1)
像这样使用
DECLARE @variableName int
SELECT @variableName = productID FROM mproducts WHERE ..
SELECT ProductVersionID
FROM cb_mproductversions
WHERE ProductID = @variableName
答案 1 :(得分:1)
您可以合并两个查询:
SELECT ProductVersionID,
FROM cb_mproductversions
WHERE ProductID IN
(
SELECT ProductID,
FROM mproducts
WHERE (ProductCode='$(product)' or ProductCode='$(product)' or BuildSysProductCode='$(product)');
)
我使用IN
因为INNER查询可能会返回多个ProductID
。
答案 2 :(得分:0)
你可以这样做:
SELECT ProductVersionID,
FROM cb_mproductversions
WHERE ProductID in
(
SELECT ProductID,
FROM mproducts
WHERE (ProductCode='$(product)' or ProductCode='$(product)' or BuildSysProductCode='$(product)')
)