最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深度分析mysql GROUP BY 與 ORDER BY

 更新時(shí)間:2014年06月08日 11:01:59   作者:  
鑒于項(xiàng)目的需要,就從網(wǎng)上找到該文章,文章分析得很詳細(xì)也很易懂,在android里,(不知道是不是現(xiàn)在水平的限制,總之我還沒(méi)找到在用ContentProvider時(shí)可以使用子查詢),主要方法是用SQLiteDatabase 的 rawQuery,直接運(yùn)行sql語(yǔ)句就可以了。

本文就和大家一起深入研究下mysql中g(shù)roup by與order by.下面是我模擬我的內(nèi)容表

 

我現(xiàn)在需要取出每個(gè)分類中最新的內(nèi)容

select * from test group by category_id order by `date`

結(jié)果如下

 

明顯。這不是我想要的數(shù)據(jù),原因是msyql已經(jīng)的執(zhí)行順序是

引用

寫的順序:select ... from... where.... group by... having... order by..
執(zhí)行順序:from... where...group by... having.... select ... order by...

所以在order by拿到的結(jié)果里已經(jīng)是分組的完的最后結(jié)果。
由from到where的結(jié)果如下的內(nèi)容。

 

到group by時(shí)就得到了根據(jù)category_id分出來(lái)的多個(gè)小組

 
 

到了select的時(shí)候,只從上面的每個(gè)組里取第一條信息結(jié)果會(huì)如下

 

即使order by也只是從上面的結(jié)果里進(jìn)行排序。并不是每個(gè)分類的最新信息。
回到我的目的上 --分類中最新的信息
根據(jù)上面的分析,group by到select時(shí)只取到分組里的第一條信息。有兩個(gè)解決方法

1,where+group by(對(duì)小組進(jìn)行排序)
2,從form返回的數(shù)據(jù)下手腳(即用子查詢)
由where+group by的解決方法
對(duì)group by里的小組進(jìn)行排序的函數(shù)我只查到group_concat()可以進(jìn)行排序,但group_concat的作用是將小組里的字段里的值進(jìn)行串聯(lián)起來(lái)。

select group_concat(id order by `date` desc) from `test` group by category_id

 

再改進(jìn)一下

select * from `test` where id in(select SUBSTRING_INDEX(group_concat(id order by `date` desc),',',1) from `test` group by category_id ) order by `date` desc

 

子查詢解決方案

select * from (select * from `test` order by `date` desc) `temp`  group by category_id order by `date` desc

自己例子

復(fù)制代碼 代碼如下:

SELECT * FROM (SELECT * FROM `ecm_copy_goods_change` ORDER BY `cid` DESC) `ecm_copy_goods_change` GROUP BY goods_id ORDER BY `cid` DESC

相關(guān)文章

最新評(píng)論

运城市| 东海县| 怀集县| 北川| 乌兰县| 红河县| 万山特区| 繁峙县| 酒泉市| 湄潭县| 明水县| 莫力| 仪陇县| 高碑店市| 丹东市| 汤阴县| 五寨县| 日照市| 长宁区| 扶风县| 遂昌县| 邓州市| 手机| 德格县| 浙江省| 莲花县| 常德市| 潮安县| 育儿| 晋中市| 宁晋县| 滦南县| 昌平区| 喀喇| 台中县| 定边县| 涟水县| 定襄县| 韩城市| 辰溪县| 盐城市|