如何解决错误:“子查询返回多个值”。 !当子查询跟随用作表达式不允许=,=,<, <= , >,> =或
问题描述:
完整的错误是:如何解决错误:“子查询返回多个值”。 !当子查询跟随用作表达式不允许=,=,<, <= , >,> =或
Subquery returned more than 1 value. Not permitted when subquery follows =, !=, <, <= , >, >= or used as an expression
查询:
SqlConnection connect = Helper.GetCon;
string query = "select sum(amardate) as[All] ,"+
"(select amardate from Amar where insertdate='" +
DateTime.UtcNow.ToString("s") + "')as[Now]," +
"(select amardate from Amar where insertdate='" +
DateTime.UtcNow.AddDays(-1).ToString("s") + "')as[Last] From Amar";
SqlDataAdapter da = new SqlDataAdapter(query, connect);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
答
一个或以上的子查询返回多行数据,只能返回一行。例如你有这样的事情发生:
1234 1121
sum(amardate) + 5678 AS now + 3141 AS last
9101 5161
其中1234
,1121
,等等都是由子查询返回的额外行。现在DB做什么?它不知道你想要加在一起的多个值中的哪一个。它也不能仅仅将这一行结果奇迹般地分成三个新行,因为它不知道分割应该如何发生。
您需要确保两个子查询只能返回ONE结果行,由ONE单个值。