今天去面试遇到一个数据库试题,首先说一下表结构如下: 表结构:mytest 表数据:mytest 要查询的结果如下: 在本题目中,需要用到sum聚合函数和if函数 sql如下: ,)) ,)) AS 负 FROM mytest GROUP BY `date`; 特别注意:sum函数试求和的,求出所有1的和,所以这里用sum 而不是count函数. 当然,本查询还可以使用其他方法: SELECT mt.`date`,(SELECT COUNT(*) FROM mytest mt1 WHERE mt
今天遇到一个问题,就是对mysql数值字符串类型进行排序,在默认情况下使用order by 字段名称 desc/asc 进行排序的时候,mysql进行的排序规则是按照ASCII码进行排序的,并不会自动的识别出这些数据是数值,百度了一下,发现对于这种情况,可以采用 order by 字段名称+0 desc/asc的形式进行排序(亲测有效) order by 字段名称*1 desc/asc的形式进行排序( 没有进行测试 ) ----这样mysql会将数值字符串类型的数据当作数值进行处理,但是存在效率