2

编辑:我的错误是我在第一个 select 语句之后有一个“go”,这会导致 @variableName 超出范围。

我有一堆相互依赖的查询,我想在另一个查询中使用第一个返回的值。例如,我想使用第一个查询的产品 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 的范围只是下一个选择语句,当我到达 DECLARE 之后的那个之后,它说它没有被声明。

4

3 回答 3

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

于 2012-06-27T14:08:27.627 回答
1

像这样使用它

DECLARE @variableName int
SELECT @variableName = productID FROM mproducts WHERE .. 

SELECT ProductVersionID
FROM cb_mproductversions
WHERE ProductID = @variableName
于 2012-06-27T14:07:27.683 回答
0

你可以做:

SELECT ProductVersionID, 
FROM cb_mproductversions
WHERE ProductID in 
(
    SELECT ProductID,
    FROM mproducts 
    WHERE (ProductCode='$(product)' or ProductCode='$(product)' or BuildSysProductCode='$(product)')
)
于 2012-06-27T14:10:04.553 回答