+ -
当前位置:首页 → 问答吧 → 大家帮帮看,这组SQL如何分组一次查询,并分组输出?

大家帮帮看,这组SQL如何分组一次查询,并分组输出?

时间:2011-07-11

来源:互联网

小弟第一次用MYSQL,1000W级以上数据库
例子如下
id type itemtext shopid;
1 1(数码类) 联想E40 1(京东)
2 3(鞋) 安踏E40 2(好乐买)
3 1(新蛋) 联想E40(0576) 3(新蛋)
4 1(数码类) 联想E40(0578) 1(京东)
5 1(包包) 手包E40 5(mBaoBao)
.....
.....


如何查询,比如,E40可以让他分组输出
数码类(10) 包包类(5) 鞋类(3) 分别表示查询出来的数码类符合条件的有10个,包包类的5个,鞋类的3个
京东(5) 新蛋(2) 好乐买(1) 分别表示查询出来的商店符合条件的京东有10个,新蛋2个,好乐买1个
下边是产品排序,比如京东符全条件有5个,先输出最符合条件的排出2个,然后到新蛋,然后到鞋类,就是混排,按关键字排序


小哥我先谢了

作者: qwe123345   发布时间: 2011-07-11

最好有简单一点的,太复杂的我看不懂了,呵呵

作者: qwe123345   发布时间: 2011-07-11

try:\
select sum(if(type=1,1,0)) as 数码类,sum(if(type=3,1,0)) as 鞋类,sum(if(type=2,1,0)) as 包包类,
sum(if(shopid=1,1,0)) as 京东,sum(if(shopid=2,1,0)) as 好乐买,....
from tt where INSTR(itemtext,'E40')>0

作者: WWWWA   发布时间: 2011-07-11

谢谢WWWA,可是这个数码类之类的可能有好几十个,店的分类也有上1000个,要是这么写,可能有好长的SQL啊

作者: qwe123345   发布时间: 2011-07-11

没办法,你的要求如此,也可以用SP来动态生成SQL语句,再执行

作者: WWWWA   发布时间: 2011-07-11

引用 3 楼 qwe123345 的回复:
谢谢WWWA,可是这个数码类之类的可能有好几十个,店的分类也有上1000个,要是这么写,可能有好长的SQL啊

只能一个个写

作者: rucypli   发布时间: 2011-07-11

而且我的店和类型都有可能地增加,那有没更好的解决方案啊,谢谢WWWA,rucypli

作者: qwe123345   发布时间: 2011-07-11

如果分次查询会快一点不,比如先查有多少类型(type),然后查商店类型(shopid),然后再查详细的数据列表itemtext

作者: qwe123345   发布时间: 2011-07-11

引用 6 楼 qwe123345 的回复:
而且我的店和类型都有可能地增加,那有没更好的解决方案啊,谢谢WWWA,rucypli

用SP来动态生成SQL语句,再执行

如果分次查询会快一点不,比如先查有多少类型(type),然后查商店类型(shopid),然后再查详细的数据列表itemtext

测试一下不就知道了

作者: wwwwb   发布时间: 2011-07-11