在查一组数据的时候报错提示GROUP BY,于是查了一下,GROUP BY与ORDER BY的区别?
GROUP BY使用某个字段去重
SELECT * 字段名1 FROM 表名 GROUP BY 字段名2;
ORDER BY使用某个字段排序,默认从大到小
SELECT * 字段名1 FROM 表名 ORDER BY 字段名2。
创建test databases table
1、groupby使用方法---对选择的列去除重复的项
eg:目前salary有几种情况?
select * from test group by salary;
2、orderby使用方法 -- 对选择的列进行排序
eg:对age从大到小排序
select * from test order by age desc;
eg:对name进行排序
select * from test order by name desc; 这样得到的并非是我们想要的结果
因为name的类型是varchar,不是数字类型,对于这种既有字符也有数字的情况怎么进行排序?
可以利用字符替换,获取后面的number进行排序:select *,replac(name,'person','') as t from test order by t+0 desc;
3、orderby与groupby混合使用
eg:如果想获取不同salary最新name的信息
select * from test group by salary;
并不是我们想要的信息,+ orderby name不影响筛选出来的结果,因为order by 是对上面结果进行排序,不能做到先排序后group
针对与我们想要先order再group的思想:select * from (select * from test order by id desc)as test1 group by salary