mysql函数使用及优化___一路记载

函数使用:

1.RAND():

  mysql数据库中有一个随机函数rand()是获取一个0-1之间的数,利用这个函数和order by一起能够把数据随机排序,

 结合 LIMIT,可实现随机取出多少条数据功能。

test_borrow 这个表记录的是每个用户在对应的产品中借了多少钱的记录。

BF:SELECT * FROM test_borrow

mysql函数使用及优化___一路记载_第1张图片

AF:使用RAND()函数,随机查询出数据,可多点击查询,查看不同的结果,SELECT * FROM test_borrow ORDER BY RAND(),也可加limit。

mysql函数使用及优化___一路记载_第2张图片

2.WITH ROLLUP:使用 GROUP BY 的 WITH ROLLUP 字句可以检索出更多的分组聚合信息,它不仅仅能像一般的 GROUP BY 语句那样检索出各组的聚合信息,还能检索出本组类的整体聚合信息。简单的说GROUP BY 根据关键字进行分组,仅仅当前分组的值,而没有进行汇总,比如领导让你统计每个用户借钱量和总的借钱总额,按照需求需要统计两次,一次汇总,一次根据用户去分组,GROUP BY 结合 WITH ROLLUP一步实现,在分组的后面紧跟分组的总和。

注:WITH ROLLUP 和order by 是互斥的,后面不能跟排序的,要不然重新套一层排序,要不然用uinon合并总统计

接下来还是以上面的数据表为例,统计以产品和用户分组,每个产品有哪些用户借钱汇总。


SELECT * FROM test_borrow

mysql函数使用及优化___一路记载_第3张图片

BF:
SELECT product_id,user_id,SUM(amount) FROM test_borrow 
GROUP BY product_id,user_id

mysql函数使用及优化___一路记载_第4张图片

BF:SELECT product_id,user_id,SUM(amount) FROM test_borrow 
GROUP BY product_id,user_id WITH ROLLUP 

mysql函数使用及优化___一路记载_第5张图片

使用后,在每个分组后会进行汇总统计,最后一行是所有的数据汇总。

3.CONCAT:字符串的拼接,以逗号分割,可以将多个字符串拼接成一个字符串。与NULL拼接结果也会NULL。

用法:concat(str1,str2,str3...)

BF:SELECT * FROM test_borrow

mysql函数使用及优化___一路记载_第6张图片
AF:SELECT CONCAT(amount,'元') 金额 FROM test_borrow 

mysql函数使用及优化___一路记载_第7张图片

4.GROUP_CONCAT:根据分组将需要的字段(一个或者多个)默认以逗号拼接成一个字段

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

a.默认以逗号拼接一个字段,根据产品分组。

SELECT  GROUP_CONCAT(user_id) FROM test_borrow GROUP BY product_id ;

mysql函数使用及优化___一路记载_第8张图片

2.默认以逗号拼接多个字符串。给每个用户ID拼接字符串

SELECT  GROUP_CONCAT('用户id-',user_id) FROM test_borrow GROUP BY product_id 

mysql函数使用及优化___一路记载_第9张图片

3.根据用户ID降序,并且以‘-’分割。

SELECT  GROUP_CONCAT(user_id,'dd' ORDER BY id DESC SEPARATOR '-') 用户 FROM test_borrow GROUP BY product_id 

mysql函数使用及优化___一路记载_第10张图片

可以根据自己的情况去拼接。

5.CONCAT_WS:以指定分割符拼接一个或者多个字符串。

concat_ws(separator, str1, str2, ...)

SELECT CONCAT_WS('-',user_id,'ss') FROM test_borrow

mysql函数使用及优化___一路记载_第11张图片

你可能感兴趣的:(mysql,mysql,WITH,ROLLUP,RAND(),mysql优化,mysql函数)