我做了一个简单的查询,使用内连接连接数据库中的两个表。查询如下:
Select t1.UserName,t1.Title,t1.FirstName,t1.LastName,t1.MiddleName,t1.IsActive,t1.ProgramID,t2.Email
from table1 t1
inner join table2 t2 on t1.UserId = t2.UserId
查询在SQL Server Management Studio中执行良好,并根据需要返回行,但在Visual Studio中调试我的代码时,到达
adapter.fill(dataset);
它抛出以下异常:
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
这是C#代码段:
string selectCmd = @"Select t1.UserName,t1.Title,t1.FirstName,t1.LastName,t1.MiddleName,t1.IsActive,t1.ProgramID,t2.Email
from table1 t1
inner join table2 t2 on t1.UserId = t2.UserId ";
DataSet dataset = new DataSet();
using (SqlConnection conn = new SqlConnection(MyConnString))
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(selectCmd, conn);
conn.Open();
adapter.Fill(dataset);
}
有什么建议吗?任何帮助将不胜感激。
答案 0 :(得分:0)
您的联接返回多个值,并且您尝试将这些值放在一个参数中。
示例:----这是您的错误查询
DECLARE @Test INT
SET @Test = (SELECT ID FROM ABC A INNER JOIN XYZ X ON A.ID = X.AID)
解决方案:
DECLARE @Test INT
SET @Test = (SELECT TOP 1 ID FROM ABC A INNER JOIN XYZ X ON A.ID = X.AID)
答案 1 :(得分:0)