标题:[求助]急SQL语句改错
只看楼主
xiaoe1126
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-2-22
 问题点数:0 回复次数:12 
[求助]急SQL语句改错

select a.my_name,b.my_sum
from mytable1 as a,mytable2 as b
where left(my_date,6)='200506'
and a.my_id=b.my_id
and 90<(select my_sum=sum(my_sum) from mytable2 group by my_id)


这个语句出现以下的情况,帮忙解决呀.

子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。



由于本人刚接触没多久.谢谢

搜索更多相关主题的帖子: SQL 语句 改错 
2006-02-27 11:35
卜酷塔
Rank: 7Rank: 7Rank: 7
来 自:魅力青岛
等 级:禁止访问
威 望:39
帖 子:2569
专家分:0
注 册:2004-6-12
得分:0 
应该加几个括弧把!
楼主看看下面这个语句如何啊?
declare @my_sum int
select @my_sum =(select my_sum=sum(my_sum) from mytable2 )
select a.my_name,b.my_sum
from mytable1 as a,mytable2 as b
where left(my_date,6)='200506'
where (left(my_date,6)='200506' )
and (a.my_id=b.my_id )
and (@my_sum >90)


觉得为时已晚的时候,恰恰是最早的时候。

2006-02-27 12:13
xiaoe1126
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-2-22
得分:0 

这是题目,"利用一个SQL语句显示2005年6月总共缴费超过90元的用户姓名"

mytable1
my_id my_name my_sex my_age

0001 John 1 34
0002 Rose 2 22
0003 Jick 1 24
0004 JIM 1 31
0005 Jean 2 54
0006 Tom 0 64
0007 Jerry 1 22
0008 Joe 2 24
0009 LI 2 15

mytable2
my_id my_date my_sum
0001 20050612 23.44
0001 20050619 29.42
0001 20050622 100.64
0001 20050512 43.19
0001 20050711 52.17
0002 20050512 23.44
0002 20050619 29.42
0003 20050722 35.64
0002 20050512 49.19


楼上那样好像也不行呀


2006-02-27 13:04
ヤ順祺冄繎ヤ
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:3032
专家分:0
注 册:2005-11-9
得分:0 
以下是引用xiaoe1126在2006-2-27 11:35:00的发言:

select a.my_name,b.my_sum
from mytable1 as a,mytable2 as b
where left(my_date,6)='200506'
and a.my_id=b.my_id
and 90<(select my_sum=sum(my_sum) from mytable2 group by my_id)


这个语句出现以下的情况,帮忙解决呀.

子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。



由于本人刚接触没多久.谢谢

你将这段代码跟版主一样用变量不行吗?应该可以吧..

2006-02-27 16:32
cg2006
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-2-21
得分:0 
以下是引用卜酷塔在2006-2-27 12:13:00的发言:
应该加几个括弧把!
楼主看看下面这个语句如何啊?
declare @my_sum int
select @my_sum =(select my_sum=sum(my_sum) from mytable2 )
select a.my_name,b.my_sum
from mytable1 as a,mytable2 as b
where left(my_date,6)='200506'
where (left(my_date,6)='200506' )
and (a.my_id=b.my_id )
and (@my_sum >90)

卜酷塔的思路应该是没有错的只是 应该把那个总值赋给变量的句子修改一下

declare @my_sum int
select my_id,my_sum=sum(my_sum) into mytable3 from mytable2 where left(my_date,6)='200506' group by my_id
select a.my_name,b.my_sum
from mytable1 as a,mytable3 as b
where (a.my_id=b.my_id )
and (@my_sum >90)

2006-02-27 20:19
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 

select
a.my_name
from
mytable1 a
where exists
(
select
b.my_id
from
mytable2 b
where
left(my_date,6) = '200506'
group by
b.my_id
having
b.my_id = a.my_id
and sum(my_sum)>90
)

试试吧。本地通过测试。应该算比较简单的写法

[此贴子已经被作者于2006-2-27 22:43:18编辑过]


2006-02-27 22:41
xiaoe1126
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-2-22
得分:0 
以下是引用LouisXIV在2006-2-27 22:41:00的发言:

select
a.my_name
from
mytable1 a
where exists
(
select
b.my_id
from
mytable2 b
where
left(my_date,6) = '200506'
group by
b.my_id
having
b.my_id = a.my_id
and sum(my_sum)>90
)

试试吧。本地通过测试。应该算比较简单的写法



谢谢了,这种方法比较容易理解.也可行.


2006-02-28 09:15
xiaoe1126
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-2-22
得分:0 
以下是引用cg2006在2006-2-27 20:19:00的发言:

卜酷塔的思路应该是没有错的只是 应该把那个总值赋给变量的句子修改一下

declare @my_sum int
select my_id,my_sum=sum(my_sum) into mytable3 from mytable2 where left(my_date,6)='200506' group by my_id
select a.my_name,b.my_sum
from mytable1 as a,mytable3 as b
where (a.my_id=b.my_id )
and (@my_sum >90)

这个你有没有运行呀,在这我运行出错了.不过还是谢谢你了,这也让我知道了另一种思路.


2006-02-28 09:17
xiaoe1126
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-2-22
得分:0 
select a.my_name,b.totalSum
from mytable1 a,
(select my_id,sum(my_sum) as totalSum
from mytable2
where substring(my_date,1,6) = '200506'
group by my_id
having sum(my_sum) > 90
) b
where a.my_id = b.my_id


大家再看一下这个,

2006-02-28 09:42
上帝的牙齿
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-2-19
得分:0 
select a.my_name,b.my_sum
from mytable1 as a,mytable2 as b
where left(my_date,6)='200506'
and a.my_id=b.my_id
and 90<ALL (select my_sum=sum(my_sum) from mytable2 group by my_id)

这样呢?
2006-02-28 14:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-47399-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.684727 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved