mysql group排序問(wèn)題
問(wèn)題描述
表結(jié)構(gòu):
ordreridcontentcreated_at13time-11aaatime-2select * from table group by orderid order by created_at desc得出的結(jié)果居然是 1|3|time-1 time2大于time1
問(wèn)題解答
回答1:因?yàn)閛racle是倒著分析你的sql語(yǔ)句的。select * from table group by created_at, orderid order by created_at desc
order by 中列,應(yīng)該出現(xiàn)在group by 子句中。created_at同時(shí)放在group by中,且created_at要放在orderid前面。
回答2:說(shuō)實(shí)話我都懷疑你的sql是否能夠執(zhí)行,select * from table group by orderid應(yīng)該是不能執(zhí)行的,select后面的字段必須和group by后面的字段一致。如果你這段SQL確實(shí)能夠執(zhí)行,那么我猜可能是因?yàn)槟銓懙牟⒉环险Z(yǔ)法規(guī)則導(dǎo)致order by并沒(méi)有起到排序的作用
上面說(shuō)的這個(gè)是針對(duì)oracle的,Mysql確實(shí)是能夠執(zhí)行的(注意:這種SQL是不標(biāo)準(zhǔn)的)
原理如下:Mysql在執(zhí)行這段代碼的時(shí)候會(huì)檢查orderid是不是主鍵或者唯一非空索引,如果不是的話就會(huì)從orderid相同的行里面任意找一條數(shù)據(jù)出來(lái)了(因?yàn)槟氵@里查詢用的是*而不是orderid,跟group by后不一致),既然是任意的數(shù)據(jù)那么里的order by是無(wú)效的
相關(guān)文章:
1. spring-mvc - spring-session-redis HttpSessionListener失效2. html5和Flash對(duì)抗是什么情況?3. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?4. javascript - QQ第三方登錄的問(wèn)題5. node.js - mongodb查找子對(duì)象的名稱為某個(gè)值的對(duì)象的方法6. 測(cè)試自動(dòng)化html元素選擇器元素ID或DataAttribute [關(guān)閉]7. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境8. 利用IPMI遠(yuǎn)程安裝centos報(bào)錯(cuò)!9. javascript - 在 model里定義的 引用表模型時(shí),model為undefined。10. 淺談Vue使用Cascader級(jí)聯(lián)選擇器數(shù)據(jù)回顯中的坑

網(wǎng)公網(wǎng)安備