SQL 查询错误:"Only one expression can be specified in the select list when the subquery is not introduce


我有一个 SQL 查询,该查询正在

C# 控制器类中用于返回搜索查询结果:

SELECT @Output = (SELECT Name, Id
                  FROM [dbo].[Users]    
                  WHERE Name = 'Robert');

但是,当我运行此查询时,我收到以下错误:

当子查询未随 EXISTS 一起引入时,只能在选择列表中指定一个表达式。

我知道只需删除其中一个列名称即可解决问题,但我希望能够为每个搜索的用户返回NameID

有没有办法更改我的查询,以便我可以返回所需的列并仍然在查询中保留我的@Output参数?任何建议将不胜感激

一种方法是将它们连接起来:

SELECT @Output = (SELECT Name + '|' + CONVERT(VARCHAR(255), Id)
                  FROM [dbo].[Users]    
                  WHERE Name = 'Robert'
                 );

另一种选择是使用两个变量,因为您需要两个项目:

SELECT @Name = Name, @Id = Id
FROM [dbo].[Users]    
WHERE Name = 'Robert';

鉴于您知道该名称是'Robert',我不明白为什么这很有用。 你可以做:

DECLARE @Name VARCHAR(255);
SET @Name = 'Robert';
SELECT @Id = Id
FROM [dbo].[Users]    
WHERE Name = @Name;

不确定这是否是您正在寻找的,您可以将@output声明为表,并在条件为真时插入值。

  Declare @output table ([name] varchar(50), ID int) 
  insert into @output([name], id)     select 'abc', 1 
  select * from @output 

输出:这只是示例数据

 name   ID
 abc    1

相关内容

最新更新