返回信息流select b_id, sum(credit_value) from gk where gk.flag=1 group by b_id
这个credit_value是gk里的一个字段
select b_id, sum(value) from gk,gk_count where gk.flag=0 and gk_count.id=gk.value_id group by b_id
这个value是gk_count里的字段
是MYSQL,分别执行的话能正确得到每个b_id的 值的sum
我想要的结果就是,相同的b_id要显示 第二个加第一个的值
不知道表述清楚没。。谢谢
这是一条镜像帖。来源:北邮人论坛 / database / #3983同步于 2009/11/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
请教询问SQL 语句
zhizi
2009/11/12镜像同步22 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
需要考虑2种情况
1、id数<2的情况
2、id数>=2的情况
select id, sum(value)
from gk,gk_count
where gk.flag=0
and gk_count.id=gk.value_id
group by id
having count(id)<2
union
select id, sum(value)
from gk,gk_count
where gk.flag=0
and gk_count.id=gk.value_id
group by id
having count(id)>=2
【 在 wuquehua 的大作中提到: 】
: 明白楼主的意思
gk表 id credit_value flag b_id
1 1 0 3
2 -2 1 3
3 -3 1 2
4 1 0 2
5 3 0 4
6 3 0 4
7 3 0 4
当flag=0时 那个gk表里的credit_value对应gk_count 里的id
当flag=1时,直接将gk表里的credit_value相加
gk_count id value
1 3
2 4
3 5
就是要出来下面的结果:
例如:b_id summer
2 3-3=0
3 3-2=1
4 15
看不明白你给的虚构数据,主要是gk,和gk_count的之间的id表示什么意思看不太明白
按照你的这个要求:“
当flag=0时 那个gk表里的credit_value对应gk_count 里的id
当flag=1时,直接将gk表里的credit_value相加
”
在sql用case when end在一个sql中能实现