资源描述:
《sql语句查询最大值》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、★sql语句查询最大值SQL查询一个表中类别字段中Max()最大值对应的记录SQL查询一个表中类别字段中Max()最大值对应的记录问题:数据库有一个表code,里面有个点击量字段click_num和一个类别字段kind以及其它信息字段,现在要搜出每个类别中点击量最大的那条记录,如果是10个类别,那么结果应该是10条记录,如果最大点击量有两个相同的只要一条。经过N次搜索,N次检测X上的解决SQL语句,终于找到个优雅的而且结果正确的SQL,这个是一个博客在Mysql的官方文档里面发现的。禁不住收藏了,以备后用。1.2.3.4.5.selectid,kind,click_n
2、umfromcodeasa=(selectmax(b.click_num)fromcodeasb(selectid,kind,click_numfromcodeasa=(selectmax(b.click_num)fromcodeasbax_click,存储的是每个类别最大的点击量1.2.3.createvieax_clickasselectmax(click_num)asclick_num,kindfromcodegroupbykind;2.筛选,保证每个类别只有一条记录1.2.3.4.5.6.7.8.9.select*from(selectid,kind,clic
3、k_numfromcode=(selectb.click_numfrommax_clickasbe.*fromtable_name,(selectmax(price)asprice,pidfromtable_namegroupbypid)astable_name_tempe_temp.price=table_name.priceandtable_name_temp.pid=table_name.pid;--SQLcodecreatetablelk1(uidint,pidint,priceint,`time`date)engine=myisam;insertintolk
4、1values(1,1,100,'2007-07-01'),(1,2,150,'2007-07-02'),(2,1,110,'2007-07-03'),(3,1,120,'2007-07-04'),(4,2,180,'2007-07-04'),(3,2,170,'2007-07-04'),(6,3,130,'2007-07-04');select*fromlk1ax(price)fromlk1groupbypid)groupbypid;--结果1:query
5、result(3records)uidpidpricetime311202007-07-04421802007-07-04631302007-07-04truncatetablelk1;insertintolk1values(1,1,200,'2007-07-01'),(1,2,200,'2007-07-02'),(2,1,110,'2007-07-03'),(3,1,120,'2007-07-04'),(4,2,180,'2007-07-04'),(3,2,170,'2007-0
6、7-04'),(6,3,130,'2007-07-04');select*fromlk1ax(price)fromlk1groupbypid)groupbypid;--结果2:queryresult(3records)uidpidpricetime112002007-07-01122002007-07-02631302007-07-04根据mysql的手册上面找到一个查询,修改了一下发现也可以实现,但是并不理解什么意思,不知道有没有人给解释一下SQLcodeSELECT*FROMlk1l1AX(l2.price)FROMlk1l2ATHENGL
7、ISH----------------------------------------10018998871002818779现在要得到如下的结果,该怎么来解决IDCHINESEMATHENGLISHMAXMIN------------------------------------------------------------1001899887988710028187798779想了半天也没想到啥好办法,首先自然而然想到用MAX和MIN函数,但是显然这两个是聚集函数,是要作用在同一个column的一个Group上面的,而现在要得到的MAX和MI