表1
信息Id 信息内容 作者
1 呵呵呵 小小
2 一起来玩 小鑫
3 你好吗? 可可表2信息Id 方式(1顶,0踩)
1 1
1 1
1 1
1 0
1 0
3 0
实现结果:信息Id 信息内容 顶 踩
1 呵呵呵 3 2
2 一起来玩 0 0
3 你好吗? 0 1
信息Id 信息内容 作者
1 呵呵呵 小小
2 一起来玩 小鑫
3 你好吗? 可可表2信息Id 方式(1顶,0踩)
1 1
1 1
1 1
1 0
1 0
3 0
实现结果:信息Id 信息内容 顶 踩
1 呵呵呵 3 2
2 一起来玩 0 0
3 你好吗? 0 1
select a.信息id,a.信息内容,
sum(decode(b.方式,1,1,0)顶,
sum(decode(b.方式,0,1,0)踩
from a,b
where a.信息id=b.信息id(+)
group by a.信息id,a.信息内容
select b.id,b.信息内容,a.c,,a.d
(
select id,count(decode(方式,1,1,0)) c,count(decode(方式,0,1,0)) d from 表2
group by id)A,表1 b where a.id=b.id
这样查询可以,但是我还想要的是安顶倒序的,可是里面有null值
信息Id 信息内容 顶 踩
1 呵呵呵 3 2
2 一起来玩
3 你好吗? 1
这样直接排序有问题,如果用case then(或者ORDER BY 顶 DESC NULLS LAST)
则可以
还有其他的办法吗?
哪个效率好一点~~
或者用count代替sum
如果以0代替null,order by desc就行,如果有null,加个nulls last。只是显示问题,和效率没什么关系
select a.信息id,a.信息内容,
count(decode(b.方式,1,1))顶,
count(decode(b.方式,0,1))踩
from a,b
where a.信息id=b.信息id(+)
group by a.信息id,a.信息内容但是空值会存在~~~~