sql语句的常用技巧
作者:bin这里提供一些日常工作中可能会使用到的sql技巧
一、正则表达式的使用
regexp语句返回0即表示匹配成功,1匹配失败
mysql> select 'dada' regexp '^a'; +--------------------+ | 'dada' regexp '^a' | +--------------------+ | 0 | +--------------------+
示例:查找name以ben开头的user
select * from user where name regexp '^ben';
二、巧用rand()提取随机行
我们可以使用
SELECT * FROM `table` WHERE order by rand();
但是这样效率会很低,所以还有以下实现方式:
我们先取出最大的id,然后用随机数去乘他,得到的记过为最小行,这样就可以随机取出一行了;
SELECT * FROM `table` WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`))) ORDER BY id LIMIT 1;
三、使用group by和with rollup 语句
使用group by对数据进行分组统计
统计对应购买日期对购买数量:
SELECT buy_date,count(id) FROM `tbl` group by buy_date order by buy_date desc
使用with rollup获取分组对聚合信息
SELECT buy_date,count(id) FROM `stock_pool` group by buy_date with ROLLUP
得到的结果最后一行
null 2345
显示统计了所有结果,如果此处使用2个类型进行分组,就会聚合出各个不同的分组的总和;