update testsec set CL= (select sum(Xipj)/n2 from testsec group by n2) 因为你用到sum()聚合,你在结果集中就必须使用group by 对没聚合的列进行分组
谢谢,问题已经解决了,就是缺一个“group by n2” 但是我现在又有一个新的问题,就是我的表中有一列Xipj,我想用以下代码实现求每行的平均值 string sqlXipj = "update testsec set Xipj=(select (x1+x2+x3+x4)/4 from testsec)";//计算每行的平均值 int resultXipj = Convert.ToInt32(SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlXipj, null)); Response.Write("<script>alert('成功获取Xipj')</script>");可是系统出现如下错误提示“子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。语句已终止。”我不知道是哪里不对,求指导啊!我是个asp.net新手
谢谢,问题已经解决了,就是缺一个“group by n2” 但是我现在又有一个新的问题,就是我的表中有一列Xipj,我想用以下代码实现求每行的平均值 string sqlXipj = "update testsec set Xipj=(select (x1+x2+x3+x4)/4 from testsec)";//计算每行的平均值 int resultXipj = Convert.ToInt32(SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlXipj, null)); Response.Write("<script>alert('成功获取Xipj')</script>");可是系统出现如下错误提示“子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。语句已终止。”我不知道是哪里不对,求指导啊!我是个asp.net新手 select (x1+x2+x3+x4)/4 from testsec 这个结果集出来的是一列,赋值的时候错误了,因为不能把一列赋值给另外一列,应该改为: update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec)
update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) 而且这句也是有问题的,这样会把所有行都更新,所以应该加上where条件,变成update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where id(这里看你自己如何筛选)='XXX'
而且这句也是有问题的,这样会把所有行都更新,所以应该加上where条件,变成update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where id(这里看你自己如何筛选)='XXX' 您好!朋友,以下是我testsec表的一部分(一共25行数据) Number x1 x2 x3 x4 Xipj 1 3.0 4.2 3.5 3.8 2 4.3 4.1 3.7 3.9 3 4.2 3.6 3.2 3.4 4 3.9 4.3 4.0 3.6 .... 如果用您的代码“update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=1 是可以实现的,但是只有Number=1这一行的结果,我想得到各行的结果,于是我用了for语句,代码如下 int i; for(i=1;i<=25;i++) { update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=i; } 可是系统提示列名i无效,我知道是因为我的testsec表里面没有i,那我应该怎样使用循环语句实现求每行四个数的平均值啊:)求指导啊
而且这句也是有问题的,这样会把所有行都更新,所以应该加上where条件,变成update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where id(这里看你自己如何筛选)='XXX' 您好!朋友,以下是我testsec表的一部分(一共25行数据) Number x1 x2 x3 x4 Xipj 1 3.0 4.2 3.5 3.8 2 4.3 4.1 3.7 3.9 3 4.2 3.6 3.2 3.4 4 3.9 4.3 4.0 3.6 .... 如果用您的代码“update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=1 是可以实现的,但是只有Number=1这一行的结果,我想得到各行的结果,于是我用了for语句,代码如下 int i; for(i=1;i<=25;i++) { update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=i; } 可是系统提示列名i无效,我知道是因为我的testsec表里面没有i,那我应该怎样使用循环语句实现求每行四个数的平均值啊:)求指导啊 我晕……你可以在C#中写这个循环,而不是SQL,因为你 where Number=i这句话在SQL中是不对的,在C#中,每循环一次,执行相应的SQL语句即可,只是传递进去的参数为 i
而且这句也是有问题的,这样会把所有行都更新,所以应该加上where条件,变成update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where id(这里看你自己如何筛选)='XXX' 您好!朋友,以下是我testsec表的一部分(一共25行数据) Number x1 x2 x3 x4 Xipj 1 3.0 4.2 3.5 3.8 2 4.3 4.1 3.7 3.9 3 4.2 3.6 3.2 3.4 4 3.9 4.3 4.0 3.6 .... 如果用您的代码“update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=1 是可以实现的,但是只有Number=1这一行的结果,我想得到各行的结果,于是我用了for语句,代码如下 int i; for(i=1;i<=25;i++) { update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=i; } 可是系统提示列名i无效,我知道是因为我的testsec表里面没有i,那我应该怎样使用循环语句实现求每行四个数的平均值啊:)求指导啊 我晕……你可以在C#中写这个循环,而不是SQL,因为你 where Number=i这句话在SQL中是不对的,在C#中,每循环一次,执行相应的SQL语句即可,只是传递进去的参数为而且这句也是有问题的,这样会把所有行都更新,所以应该加上where条件,变成update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where id(这里看你自己如何筛选)='XXX' 您好!朋友,以下是我testsec表的一部分(一共25行数据) Number x1 x2 x3 x4 Xipj 1 3.0 4.2 3.5 3.8 2 4.3 4.1 3.7 3.9 3 4.2 3.6 3.2 3.4 4 3.9 4.3 4.0 3.6 .... 如果用您的代码“update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=1 是可以实现的,但是只有Number=1这一行的结果,我想得到各行的结果,于是我用了for语句,代码如下 int i; for(i=1;i<=25;i++) { update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=i; } 可是系统提示列名i无效,我知道是因为我的testsec表里面没有i,那我应该怎样使用循环语句实现求每行四个数的平均值啊:)求指导啊 我晕……你可以在C#中写这个循环,而不是SQL,因为你 where Number=i这句话在SQL中是不对的,在C#中,每循环一次,执行相应的SQL语句即可,只是传递进去的参数为 i 朋友,要不你帮个忙写一下这个循环呗,我实在是个外行,我写的全部代码都是参考别人再加上连蒙带猜才写成的,里面很多东西我也不是很懂,sql,asp.net我是这个寒假自学的:( 或者您帮忙看一下下面这个代码,我就是在asp,net中写的,但还是提示列名i无效,麻烦您帮帮忙修改一下,或者帮我写一下这个代码,谢谢! int i; for (i = 1; i <= 25; i++) { string sqlXipj = "update testsec set Xipj=(select sum(x1+x2+x3+x4)/4 from testsec where Number=i) where Number=i";//获取X平均值 int resultXipj = Convert.ToInt32(SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlXipj, null)) Response.Write("<script>alert('成功获取Xipj')</script>"); }
for (int i = 0; i<25; i++) { string sqlXipj = "update testsec set Xipj=(select sum(x1+x2+x3+x4)/4 from testsec where Number="+i+")";//获取X平均值 int resultXipj = Convert.ToInt32(SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlXipj, null)) Response.Write("<script>alert('成功获取Xipj')</script>"); }这次应该是没问题了
from (select sum(Xipj) as X from testsec)a
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
(select sum(Xipj)/n2 from testsec group by n2)
因为你用到sum()聚合,你在结果集中就必须使用group by 对没聚合的列进行分组
但是我现在又有一个新的问题,就是我的表中有一列Xipj,我想用以下代码实现求每行的平均值
string sqlXipj = "update testsec set Xipj=(select (x1+x2+x3+x4)/4 from testsec)";//计算每行的平均值
int resultXipj = Convert.ToInt32(SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlXipj, null));
Response.Write("<script>alert('成功获取Xipj')</script>");可是系统出现如下错误提示“子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。语句已终止。”我不知道是哪里不对,求指导啊!我是个asp.net新手
但是我现在又有一个新的问题,就是我的表中有一列Xipj,我想用以下代码实现求每行的平均值
string sqlXipj = "update testsec set Xipj=(select (x1+x2+x3+x4)/4 from testsec)";//计算每行的平均值
int resultXipj = Convert.ToInt32(SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlXipj, null));
Response.Write("<script>alert('成功获取Xipj')</script>");可是系统出现如下错误提示“子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。语句已终止。”我不知道是哪里不对,求指导啊!我是个asp.net新手
select (x1+x2+x3+x4)/4 from testsec 这个结果集出来的是一列,赋值的时候错误了,因为不能把一列赋值给另外一列,应该改为:
update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec)
而且这句也是有问题的,这样会把所有行都更新,所以应该加上where条件,变成update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where id(这里看你自己如何筛选)='XXX'
您好!朋友,以下是我testsec表的一部分(一共25行数据)
Number x1 x2 x3 x4 Xipj
1 3.0 4.2 3.5 3.8
2 4.3 4.1 3.7 3.9
3 4.2 3.6 3.2 3.4
4 3.9 4.3 4.0 3.6
....
如果用您的代码“update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=1 是可以实现的,但是只有Number=1这一行的结果,我想得到各行的结果,于是我用了for语句,代码如下
int i;
for(i=1;i<=25;i++)
{
update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=i;
}
可是系统提示列名i无效,我知道是因为我的testsec表里面没有i,那我应该怎样使用循环语句实现求每行四个数的平均值啊:)求指导啊
您好!朋友,以下是我testsec表的一部分(一共25行数据)
Number x1 x2 x3 x4 Xipj
1 3.0 4.2 3.5 3.8
2 4.3 4.1 3.7 3.9
3 4.2 3.6 3.2 3.4
4 3.9 4.3 4.0 3.6
....
如果用您的代码“update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=1 是可以实现的,但是只有Number=1这一行的结果,我想得到各行的结果,于是我用了for语句,代码如下
int i;
for(i=1;i<=25;i++)
{
update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=i;
}
可是系统提示列名i无效,我知道是因为我的testsec表里面没有i,那我应该怎样使用循环语句实现求每行四个数的平均值啊:)求指导啊
我晕……你可以在C#中写这个循环,而不是SQL,因为你 where Number=i这句话在SQL中是不对的,在C#中,每循环一次,执行相应的SQL语句即可,只是传递进去的参数为 i
您好!朋友,以下是我testsec表的一部分(一共25行数据)
Number x1 x2 x3 x4 Xipj
1 3.0 4.2 3.5 3.8
2 4.3 4.1 3.7 3.9
3 4.2 3.6 3.2 3.4
4 3.9 4.3 4.0 3.6
....
如果用您的代码“update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=1 是可以实现的,但是只有Number=1这一行的结果,我想得到各行的结果,于是我用了for语句,代码如下
int i;
for(i=1;i<=25;i++)
{
update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=i;
}
可是系统提示列名i无效,我知道是因为我的testsec表里面没有i,那我应该怎样使用循环语句实现求每行四个数的平均值啊:)求指导啊
我晕……你可以在C#中写这个循环,而不是SQL,因为你 where Number=i这句话在SQL中是不对的,在C#中,每循环一次,执行相应的SQL语句即可,只是传递进去的参数为而且这句也是有问题的,这样会把所有行都更新,所以应该加上where条件,变成update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where id(这里看你自己如何筛选)='XXX'
您好!朋友,以下是我testsec表的一部分(一共25行数据)
Number x1 x2 x3 x4 Xipj
1 3.0 4.2 3.5 3.8
2 4.3 4.1 3.7 3.9
3 4.2 3.6 3.2 3.4
4 3.9 4.3 4.0 3.6
....
如果用您的代码“update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=1 是可以实现的,但是只有Number=1这一行的结果,我想得到各行的结果,于是我用了for语句,代码如下
int i;
for(i=1;i<=25;i++)
{
update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec) where Number=i;
}
可是系统提示列名i无效,我知道是因为我的testsec表里面没有i,那我应该怎样使用循环语句实现求每行四个数的平均值啊:)求指导啊
我晕……你可以在C#中写这个循环,而不是SQL,因为你 where Number=i这句话在SQL中是不对的,在C#中,每循环一次,执行相应的SQL语句即可,只是传递进去的参数为 i
朋友,要不你帮个忙写一下这个循环呗,我实在是个外行,我写的全部代码都是参考别人再加上连蒙带猜才写成的,里面很多东西我也不是很懂,sql,asp.net我是这个寒假自学的:(
或者您帮忙看一下下面这个代码,我就是在asp,net中写的,但还是提示列名i无效,麻烦您帮帮忙修改一下,或者帮我写一下这个代码,谢谢!
int i;
for (i = 1; i <= 25; i++)
{
string sqlXipj = "update testsec set Xipj=(select sum(x1+x2+x3+x4)/4 from testsec where Number=i) where Number=i";//获取X平均值
int resultXipj = Convert.ToInt32(SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlXipj, null))
Response.Write("<script>alert('成功获取Xipj')</script>");
}
for (int i = 0; i<25; i++)
{
string sqlXipj = "update testsec set Xipj=(select sum(x1+x2+x3+x4)/4 from testsec where Number="+i+")";//获取X平均值
int resultXipj = Convert.ToInt32(SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlXipj, null))
Response.Write("<script>alert('成功获取Xipj')</script>");
}这次应该是没问题了