首先是查询:
1、关于limit
用法简单,只是不同于oracle的 where rownum<2
这里只用 limit 1
写法:
select * from a limit 1;
连where都不需要
2、关于计算两个日期之间的年
使用了 timestampdiff(typy , date1,date2) 如:
- SELECT TIMESTAMPDIFF(YEAR,'1993-03-23 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S'))
- 这里的年可不会四舍五入,只是向下取整,如两日期间隔 3年11个月,结果也是3。
- 这里的type可以是SECOND、MINUTE、HOUR、DAY、WEEK、QUARTER、MONTH、YEAR
3、取出某个时间值的年份、月份、日
使用 extract(type from date/time),这里的type可是year、year_month、month、day、day_hour、DAY_SECOND、DAY_minute,具体结果可以一一试试。
如:
- select extract(year from now())
4、将分组中的值连起来,用逗号分隔 , group_concat() 比如,你有一组数据,希望将每个人的“skill”放在一个字段中,并用逗号分隔。
name | skill |
张三 | 唱歌 |
张三 | 跳舞 |
张三 | 数据分析 |
李四 | 表演 |
使用的脚本如下:
- select name, group_concat(skill)
- from a
基础表如下:
serv | state |
a | 正常 |
b | 正常 |
c | 不正常 |
使用查询语句如下:
- select count(case when state = '正常' then serv end) as '正常'
- ,count(case when state = '不正常' then serv end) as '不正常'
- from a;
正常 | 不正常 |
2 | 1 |
OK,以上为今天工作中遇到的mysql问题及解决方案。
加油,亲爱的自己!