2

編集:私の間違いは、最初のselectステートメントの後に「go」があり、@variableNameがスコープ外になることでした。

相互に依存するクエリがたくさんあり、最初のクエリから返された値を別のクエリで使用したいと思います。たとえば、最初のクエリの製品IDを使用したい:

SELECT ProductID,
FROM mproducts 
WHERE (ProductCode='$(product)' 
    or ProductCode='$(product)' 
    or BuildSysProductCode='$(product)');

2番目のもので

SELECT ProductVersionID, 
FROM cb_mproductversions
WHERE ProductID=***variableName***
go

変数を調べたところ、変数に値を格納する方法をいくつか見てきました。

DECLARE @variableName
SELECT @variableName AS productID 
FROM mproducts 
...

しかし、@ variableNameのスコープは次のselectステートメントにすぎないようで、DECLAREの直後のスコープに到達すると、宣言されていないと表示されます。

4

3 に答える 3

1

このように使用してください

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

SELECT ProductVersionID
FROM cb_mproductversions
WHERE ProductID = @variableName
于 2012-06-27T14:07:27.683 に答える
1

両方のクエリを組み合わせることができます。

SELECT ProductVersionID, 
FROM cb_mproductversions
WHERE ProductID IN
  (
     SELECT ProductID,
     FROM mproducts 
     WHERE (ProductCode='$(product)' or ProductCode='$(product)' or BuildSysProductCode='$(product)');
  )

ININNERクエリが複数を返す可能性があるため、私はを使用しますProductID

于 2012-06-27T14:08:27.627 に答える
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 に答える