SQL one select语句从一个表将数据存储在局部变量中

SQL one select语句从一个表将数据存储在局部变量中,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在寻找一种方法,将一个表中的数据存储在一个select语句中的两个局部变量中 DECLARE @TITLE NVARCHAR() DECLARE @DESCRIPTION NVARCHAR() 结构是这样的 experienceID(int)| title(string)| description(string)| userId 我想做的是检查用户是否有任何体验,如果有,则将其存储在同一选择中。我想检查用户是否有任何与任何体验相关的描述,并将其存储在变量中 因此,结果将是: @TITLE=

我正在寻找一种方法,将一个表中的数据存储在一个select语句中的两个局部变量中

DECLARE @TITLE NVARCHAR()
DECLARE @DESCRIPTION NVARCHAR()
结构是这样的

experienceID(int)| title(string)| description(string)| userId

我想做的是检查用户是否有任何体验,如果有,则将其存储在同一选择中。我想检查用户是否有任何与任何体验相关的描述,并将其存储在变量中

因此,结果将是:

@TITLE=如果userId=X有经验,则TITLE列中的任何值

@DESCRIPTION=将是非空字符串的第一个值

例如:对于userId=1,有经验,因此标题和描述都有数据

例如:对于userId=2,有经验,但只有title有数据

例如:对于userId=3,没有任何经验,所以我没有任何数据

对于所有情况,我需要将结果存储在2个局部变量中。我不在乎它们是否有价值

DECLARE @VAR
DECLARE @VAR2

    SET @VAR = SELECT DESCRIPTION FROM SOMETHING WHERE DESCRIPTION NOT NULL AND DESCRIPTION NOT LIKE '' AND userid = x
    SET @VAR2 = SELECT ExperienceId FROM SOMETHING where userid = x
如果您有链接到体验表内部的用户表,请在experienceid上连接它们


根据您的需要调整查询。

请显示完整的表结构、一些示例数据,以及理想情况下所需的输出,除非您认为您的描述足够。您希望在普通变量或表变量中使用这些数据吗?您希望在末尾使用单引号(“”),而不是双引号(“”@RaduGheorghiu:为什么?我希望此表存储用户体验,因此可能包含每个用户的多条记录。OP希望合并两个共享相同用户id的记录,但其中第一个包含(非空)标题,另一个包含(非空)描述。
SELECT @TITLE = MIN(NULLIF(TITLE,'')), @DESCRIPTION = MIN(NULLIF(DESCRIPTION,''))
FROM dbo.Experiences
WHERE UserId = @UserId 
GROUP BY UserId 
SELECT @TITLE = MIN(NULLIF(TITLE,'')), @DESCRIPTION = MIN(NULLIF(DESCRIPTION,''))
FROM dbo.Experiences
WHERE UserId = @UserId 
GROUP BY UserId 
DECLARE @TITLE NVARCHAR(20)
DECLARE @DESCRIPTION NVARCHAR(20)

SELECT @TITLE = title, @DESCRIPTION = description
from mytable
where description is not null

SELECT @TITLE, @DESCRIPTION