mysql中group by和order by同時使用無效 group_concat
阿新 • • 發佈:2018-12-20
每天學習一點點,進步一點點,努力給自己、給我愛的人一個更好的未來!
---- zc
一個需求,查詢每個班級中學生數量,並且判斷該班級年齡有沒有20的
主要用到GROUP_CONCAT關鍵字,下面例子
一張表:
sql:
create table `student` ( `id` int (11), `sname` varchar (96), `saddress` varchar (192), `age` int (11), `stu_class` varchar (96) ); insert into `student` (`id`, `sname`, `saddress`, `age`, `stu_class`) values('1','張三','北京','18','一班'); insert into `student` (`id`, `sname`, `saddress`, `age`, `stu_class`) values('2','里斯','天津','23','一班'); insert into `student` (`id`, `sname`, `saddress`, `age`, `stu_class`) values('3','王五','天津','33','一班'); insert into `student` (`id`, `sname`, `saddress`, `age`, `stu_class`) values('4','趙六','北京','20','三班'); insert into `student` (`id`, `sname`, `saddress`, `age`, `stu_class`) values('5','天氣','北京','20','三班'); insert into `student` (`id`, `sname`, `saddress`, `age`, `stu_class`) values('6','王八','河北','19','二班'); insert into `student` (`id`, `sname`, `saddress`, `age`, `stu_class`) values('7','李四','上海','23','三班'); insert into `student` (`id`, `sname`, `saddress`, `age`, `stu_class`) values('8','天齊','河南','23','一班'); insert into `student` (`id`, `sname`, `saddress`, `age`, `stu_class`) values('9','風格','河北','19','二班');
sql:
SELECT COUNT(1) countNum, sname,saddress,stu_class,
GROUP_CONCAT(age ORDER BY age) ageArr
FROM student
GROUP BY stu_class
結果:
其年齡就是排序的
GROUP_CONCAT會得到這樣一個字串“18,23,23,33”,需要分割 split
如果在js中
//假設data是呼叫介面返回的資料 data.forEach(function(value,index,array){ var arr = value.ageArr.split(","); //如果年齡中有20,則返回其下標,-1為沒有 if (arr.indexOf("20") == -1) { //TODO } });
總體有點亂,但不難理解,因為專案中需要該思想,需要判斷,找了些資料,所以記錄一下