国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

mysql group排序問題

瀏覽:154日期:2022-06-20 14:50:59

問題描述

表結構:

ordreridcontentcreated_at13time-11aaatime-2

select * 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是否能夠執行,select * from table group by orderid應該是不能執行的,select后面的字段必須和group by后面的字段一致。如果你這段SQL確實能夠執行,那么我猜可能是因為你寫的并不符合語法規則導致order by并沒有起到排序的作用

上面說的這個是針對oracle的,Mysql確實是能夠執行的(注意:這種SQL是不標準的)

原理如下:Mysql在執行這段代碼的時候會檢查orderid是不是主鍵或者唯一非空索引,如果不是的話就會從orderid相同的行里面任意找一條數據出來了(因為你這里查詢用的是*而不是orderid,跟group by后不一致),既然是任意的數據那么里的order by是無效的

相關文章:
主站蜘蛛池模板: 广安市| 江陵县| 红安县| 祁阳县| 拉萨市| 五台县| 永宁县| 大悟县| 呼伦贝尔市| 雷山县| 同心县| 理塘县| 宁陵县| 资阳市| 醴陵市| 桐庐县| 永胜县| 洛隆县| 株洲市| 碌曲县| 临桂县| 青田县| 梁平县| 斗六市| 华池县| 醴陵市| 疏勒县| 怀来县| 漳平市| 苗栗县| 墨玉县| 古浪县| 徐水县| 衡水市| 康定县| 仪征市| 积石山| 日照市| 枞阳县| 唐河县| 长阳|