1.RAND():
mysql数据库中有一个随机函数rand()是获取一个0-1之间的数,利用这个函数和order by一起能够把数据随机排序,
结合 LIMIT,可实现随机取出多少条数据功能。
test_borrow 这个表记录的是每个用户在对应的产品中借了多少钱的记录。
BF:SELECT * FROM test_borrow
AF:使用RAND()函数,随机查询出数据,可多点击查询,查看不同的结果,SELECT * FROM test_borrow ORDER BY RAND(),也可加limit。
2.WITH ROLLUP:使用 GROUP BY 的 WITH ROLLUP 字句可以检索出更多的分组聚合信息,它不仅仅能像一般的 GROUP BY 语句那样检索出各组的聚合信息,还能检索出本组类的整体聚合信息。简单的说GROUP BY 根据关键字进行分组,仅仅当前分组的值,而没有进行汇总,比如领导让你统计每个用户借钱量和总的借钱总额,按照需求需要统计两次,一次汇总,一次根据用户去分组,GROUP BY 结合 WITH ROLLUP一步实现,在分组的后面紧跟分组的总和。
注:WITH ROLLUP 和order by 是互斥的,后面不能跟排序的,要不然重新套一层排序,要不然用uinon合并总统计
接下来还是以上面的数据表为例,统计以产品和用户分组,每个产品有哪些用户借钱汇总。
SELECT * FROM test_borrow
BF:
SELECT product_id,user_id,SUM(amount) FROM test_borrow
GROUP BY product_id,user_id
BF:SELECT product_id,user_id,SUM(amount) FROM test_borrow
GROUP BY product_id,user_id WITH ROLLUP
使用后,在每个分组后会进行汇总统计,最后一行是所有的数据汇总。
3.CONCAT:字符串的拼接,以逗号分割,可以将多个字符串拼接成一个字符串。与NULL拼接结果也会NULL。
用法:concat(str1,str2,str3...)
BF:SELECT * FROM test_borrow
AF:SELECT CONCAT(amount,'元') 金额 FROM test_borrow
4.GROUP_CONCAT:根据分组将需要的字段(一个或者多个)默认以逗号拼接成一个字段
group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
a.默认以逗号拼接一个字段,根据产品分组。
SELECT GROUP_CONCAT(user_id) FROM test_borrow GROUP BY product_id ;
2.默认以逗号拼接多个字符串。给每个用户ID拼接字符串
SELECT GROUP_CONCAT('用户id-',user_id) FROM test_borrow GROUP BY product_id
3.根据用户ID降序,并且以‘-’分割。
SELECT GROUP_CONCAT(user_id,'dd' ORDER BY id DESC SEPARATOR '-') 用户 FROM test_borrow GROUP BY product_id
可以根据自己的情况去拼接。
5.CONCAT_WS:以指定分割符拼接一个或者多个字符串。
concat_ws(separator, str1, str2, ...)
SELECT CONCAT_WS('-',user_id,'ss') FROM test_borrow