Mysql之group by踩過的坑

2021-09-13 20:11:38 字數 1406 閱讀 8807

mysql的group by分組是先排序後分組;對於使用者想要先排序後分組獲取最新的記錄,通過group by發現不可行

驗證步驟:

1、建立乙個tt表進行驗證

create table `tt` (

`id` int(11) not null auto_increment,

`num` int(11) default null,

`name` varchar(255) default null,

primary key (`id`)

) engine=innodb default charset=utf8;

2、插入資料

3、業務場景,想取tt表中通過name中按公升序先排序,然後num進行分組,取name最小的一行資料

select

*, group_concat(id),

group_concat(name)

from

( select

*from

ttorder by

num,

name asc

) agroup by

num;

結果:如下圖所示沒按照order by進行排序取資料

explain分析:

4、對sql進行limit限制

select

*, group_concat(id),

group_concat(name)

from

( select

*from

ttorder by

num,

name asc

limit 1000

) agroup by

num;

結果:如下圖所示,取資料正常

explain分析:

通過explain分析,加上limit後先排序tt表,生成表,然後進行分組排序。而第一種sample的直接select進行分組排序。

參考mysql的explain優化

而對於distinct 只能針對單個或多個列進行去重;不能取出完整的行資料,所有排除

總結 linux安裝mysql踩過的坑。。。

總結 linux安裝mysql踩過的坑。舉例 使用的 mysql server and client 5.5.48 1.linux2.6.x86 64.rpm安裝 環境是centos7 安裝好依賴之後 繼續rpm ivh mysql server and client 5.5.48 1.linux2...

那些年之cordova踩過的坑

私人筆記 如果安裝的是crosswalk with cordova 整合版的話 新增外掛程式的方法是 需要的環境 nodejs git 1 npm安裝 plugman npm install g plugman2 cd到當前專案根目錄 cd f music3 安裝ngcordova外掛程式 這一步千...

uniapp之那些年踩過的坑

這裡我把一些坑列舉出來了?這裡有兩點 使用this.set obj key 值 或 者thi s.set obj,key,值 或者this.set ob j,ke y,值 或者th is.set array,index,值 像是處理vue底層監聽不到資料變化的解決方式 要用資料巢狀陣列,而不是物件包...