文章詳情頁
mysql group排序問題
瀏覽:265日期:2022-06-20 14:50:59
問題描述
表結構:
ordreridcontentcreated_at13time-11aaatime-2select * from table group by orderid order by created_at desc得出的結果居然是 1|3|time-1 time2大于time1
問題解答
回答1:因為oracle是倒著分析你的sql語句的。select * from table group by created_at, orderid order by created_at desc
order by 中列,應該出現在group by 子句中。created_at同時放在group by中,且created_at要放在orderid前面。
回答2:說實話我都懷疑你的sql是否能夠執(zhí)行,select * from table group by orderid應該是不能執(zhí)行的,select后面的字段必須和group by后面的字段一致。如果你這段SQL確實能夠執(zhí)行,那么我猜可能是因為你寫的并不符合語法規(guī)則導致order by并沒有起到排序的作用
上面說的這個是針對oracle的,Mysql確實是能夠執(zhí)行的(注意:這種SQL是不標準的)
原理如下:Mysql在執(zhí)行這段代碼的時候會檢查orderid是不是主鍵或者唯一非空索引,如果不是的話就會從orderid相同的行里面任意找一條數據出來了(因為你這里查詢用的是*而不是orderid,跟group by后不一致),既然是任意的數據那么里的order by是無效的
相關文章:
1. mac里的docker如何命令行開啟呢?2. 為什么我ping不通我的docker容器呢???3. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題4. docker容器呢SSH為什么連不通呢?5. nignx - docker內nginx 80端口被占用6. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””7. angular.js使用$resource服務把數據存入mongodb的問題。8. docker gitlab 如何git clone?9. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個是怎么回事????10. docker-compose 為何找不到配置文件?
排行榜

網公網安備