Sql server SQL查询结果到不带唯一标识符的局部变量
我对SQL比较陌生,我正在尝试编写一个查询,将多行的结果分配到一个局部变量中Sql server SQL查询结果到不带唯一标识符的局部变量,sql-server,tsql,Sql Server,Tsql,我对SQL比较陌生,我正在尝试编写一个查询,将多行的结果分配到一个局部变量中 DECLARE @x VARCHAR(MAX) SET @x= (SELECT someCol FROM table) --Does important stuff to the @x variable SELECT @x 在研究过程中,我意识到这是行不通的,因为子查询只能返回一个值,而我的查询将返回多个结果。但我不能这样做: DECLARE @x VARCHAR(MAX) SET
DECLARE @x VARCHAR(MAX)
SET @x= (SELECT someCol
FROM table)
--Does important stuff to the @x variable
SELECT @x
在研究过程中,我意识到这是行不通的,因为子查询只能返回一个值,而我的查询将返回多个结果。但我不能这样做:
DECLARE @x VARCHAR(MAX)
SET @x= (SELECT someCol
FROM table
where id= 'uniqueIdentifier')
--Does important stuff to the @x variable
SELECT @x
我不能使用where子句的原因是我需要对整个表而不仅仅是一行执行此操作。有什么想法吗
编辑:我意识到我的问题太广泛了,所以我将尝试重新格式化代码以提供一些上下文
SELECT col_ID, col_Definition
FROM myTable
如果我运行这个查询,colu定义将返回一个大的varchar,它包含很多信息,比如我试图获取的另一个表的主键。比如说,我做到了:
DECLARE @x VARCHAR(MAX)
SET @x= (SELECT col_Definition
FROM myTable
WHERE col_ID = 1)
--Function to do the filtering of the varchar variable that works as expected
SELECT @x as [Pk of another table] --returns filtered col_Definition
这将按预期工作,因为它返回一行。但是,我希望能够运行此查询,以便它为myTable表中的每一行返回筛选的varchar。您需要首先定义“uniqueIdentifier”是什么。 不确定是否使用子查询并获取结果并使用该结果执行另一个查询,除非执行某种内部联接,或者如果使用python或其他语言处理数据,则使用:
("SELECT someCol
FROM table
where id='%s'" % Id)
如果我理解正确的话,您将一个PK存储在一个字符串中,您希望最终获得该字符串并使用该字符串连接到该表。我会考虑将您想要处理的记录组放入一个临时表中,然后对varchar列应用一些逻辑来获得PK。该逻辑最好是基于集合的,但如果确实需要逐行执行,请使用标量函数而不是变量,并将其应用于临时表: 选择pk_列,dbo.scalarfunctionpk_列作为RowByRowWithFunction,子字符串pk_列,5,10作为setbasedMuchs
来自诱惑。为什么需要将所有行放入一个变量中?为什么不使用临时表呢?我想把它放在变量中的唯一原因是为了能够过滤结果。someCol中的数据是一个相当长的varchar,它保存了另一个表的主键。所以我使用变量来过滤工作,然后显示过滤结果。这适用于单行,但我不知道如何处理多行。不过我会考虑使用临时表@韦尤博士