为变量赋值的SELECT语句不能与数据检索操作1结合使用

时间:2016-03-26 14:24:19

标签: sql-server tsql

我一直收到此错误

  

为变量赋值的SELECT语句不能是   结合数据检索操作

当我运行此代码时:

SELECT 
    @i = Users,
    (NAME + ' ' + Surname) AS names
FROM   
    dbo.HelpDeskUsers
WHERE  
    [names] LIKE @userid 

我尝试了另一种方式......

SET 
  @i = (SELECT  
            [Users],
            ([Name] + ' ' + [Surname]) AS [names]
        FROM  
            dbo.HelpDeskUsers
        WHERE  
            Names LIKE @userid) 

我收到此错误:

  

Msg 207,Level 16,State 1,Procedure test,Line 17
  列名称无效'名称'

     

Msg 116,Level 16,State 1,Procedure test,Line 19
  子查询时,只能在选择列表中指定一个表达式   没有引入EXISTS。

3 个答案:

答案 0 :(得分:0)

您不能在同一个Alias查询select子句中使用where名称,并且您的查询中还有其他许多错误

如果没有错,你正在寻找这个

select @i=Users 
from dbo.HelpDeskUsers 
where Name + ' ' + Surname  = @userid

这是逻辑处理查询的方式

1. FROM
2. ON
3. OUTER
4. WHERE
5. GROUP BY
6. CUBE | ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10 ORDER BY
11. TOP

正如您在SELECT子句后面看到的WHERE一样,您无法使用where中生成的select中的别名

答案 1 :(得分:0)

错误:
为变量赋值的SELECT语句不能与数据检索操作结合使用

SELECT @i = Users,
       ( NAME + ' ' + Surname ) AS names
FROM   dbo.HelpDeskUsers
WHERE  [names] LIKE @userid

上述声明一般说明,您试图返回数据(姓名+姓氏)并将值分配给无效的变量(用户)

答案 2 :(得分:0)

以下查询可以帮助您

;WITH [CTEUsers]
AS
(
SELECT  [Users]
        ,[NAME] + ' ' + [Surname] AS [names]
FROM    dbo.[HelpDeskUsers]
)

SELECT  @i = [Users] 
FROM    [CTEUsers] 
WHERE   [names] LIKE @userid