在选择语句中使用一个单元格的值(使用 sqlcmd 运行)



编辑:我的错误是我在第一个选择语句之后有一个"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 之后的语句时,它说它没有声明。

像这样使用它

DECLARE @variableName int
SELECT @variableName = productID FROM mproducts WHERE .. 
SELECT ProductVersionID
FROM cb_mproductversions
WHERE ProductID = @variableName

您可以组合这两个查询:

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

我使用IN因为 INNER 查询可能会返回多个ProductID

你可以做:

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

相关内容

  • 没有找到相关文章