我有一个 SQL 查询,该查询正在
C# 控制器类中用于返回搜索查询结果:
SELECT @Output = (SELECT Name, Id
FROM [dbo].[Users]
WHERE Name = 'Robert');
但是,当我运行此查询时,我收到以下错误:
当子查询未随 EXISTS 一起引入时,只能在选择列表中指定一个表达式。
我知道只需删除其中一个列名称即可解决问题,但我希望能够为每个搜索的用户返回Name
和ID
。
有没有办法更改我的查询,以便我可以返回所需的列并仍然在查询中保留我的@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