sql扫盲计划

Posted by epimetheusQ on 2021-08-17

sql分组,获取某个字段的最后一个值,或者第一个值,或者其中某个值

查找订单下,最后一个批次。

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
order_sn,
SUBSTRING_INDEX(GROUP_CONCAT(`batch_sn` ORDER BY `id` DESC SEPARATOR '|'), '|', 1) AS batch_sn
FROM pms_order_goods_batch
GROUP BY order_sn;

GROUP_CONCAT 通常和group by 一起用,代表 order_sn内的全部batch_sn数据, 同时可以根据某个字段进行排序, 原生是逗号分割,如果使用 SEPARATOR 进行分割,那么就是使用 '|'进行分割

SUBSTRING_INDEX('需要分割的值', '分割介质', 第几个数据) AS batch_sn 别名

// 也可以batch_sn进行去重
GROUP_CONCAT(DISTINCT(`batch_sn`)) AS batch_sn

sql 随机取出10条数据

1
2
3
SELECT * FROM user order by RAND() LIMIT 10;

// rand() 函数用于取随机数据

sql 取出逗号分割的其中一个值筛选出来

1
find_in_set()