2012-06-27 50 views
2

編輯:我的錯誤是我在第一個select語句之後有一個「去」,並且會導致@variableName超出範圍。在select語句中使用一個單元格的值(與sqlcmd一起運行)

我有一堆依賴於對方的查詢,我想使用第一個返回的值的另一個。例如,我想用第一次查詢的產品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語句,當我一前一後得到的那些權後聲明它說,它不是declar編輯。

回答

1

使用方法如下

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

SELECT ProductVersionID 
FROM cb_mproductversions 
WHERE ProductID = @variableName 
+1

謝謝。我的錯誤是我在第一個select語句之後有一個「go」,這會導致@variableName超出範圍。 –

+0

@AryanGoharzad注意到,如果第一個查詢返回多個'productID',則會失敗。 –

+0

嗯..很好的接收。我想我會永遠得到「前1名」,因爲產品ID是唯一的。 –

1

您可以結合這兩個查詢:

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

我使用IN因爲內查詢可能返回多個ProductID

0

你可以這樣做:

SELECT ProductVersionID, 
FROM cb_mproductversions 
WHERE ProductID in 
(
    SELECT ProductID, 
    FROM mproducts 
    WHERE (ProductCode='$(product)' or ProductCode='$(product)' or BuildSysProductCode='$(product)') 
) 
相關問題