sql - 在 select 语句中使用一个单元格的值(使用 sqlcmd 运行)

标签 sql sql-server t-sql plsql sqlcmd

编辑:我的错误是我在第一个 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 的范围似乎只是下一个 select 语句,当我到达 DECLARE 之后的那个之后的那些语句时,它说它没有声明。

最佳答案

像这样使用

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

SELECT ProductVersionID
FROM cb_mproductversions
WHERE ProductID = @variableName

关于sql - 在 select 语句中使用一个单元格的值(使用 sqlcmd 运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228047/

相关文章:

sql-server - UNION 与 IF 语句

sql - sysdate和getdate()的常用sql是什么

c# - 如果没有匹配项,则获取第一个单个匹配元素或第一个?

sql - 查询显示 72 小时内因同一原因出院并重新入境的患者人数

mysql - 如何从包含 GPA 列表的表格中列出 GPA 最高的部门?

php - MySQL - 从两个表中查找有多少匹配项(如找到 6/9)

sql - 表中没有数据时显示空值

sql - Oracle SQL "EXECUTE IMMEDIATE"ORA-00922/06512 创建表

t-sql - sybase - 除非字符串是硬编码的,否则无法使用索引

sql - T-SQL 单列的开始和结束日期时间