如何解决错误:“子查询返回多个值”。 !当子查询跟随用作表达式不允许=,=,<, <= , >,> =或

问题描述:

完整的错误是:如何解决错误:“子查询返回多个值”。 !当子查询跟随用作表达式不允许=,=,<, <= , >,> =或

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 

其中12341121,等等都是由子查询返回的额外行。现在DB做什么?它不知道你想要加在一起的多个值中的哪一个。它也不能仅仅将这一行结果奇迹般地分成三个新行,因为它不知道分割应该如何发生。

您需要确保两个子查询只能返回ONE结果行,由ONE单个值。