引子
现有一个需求:一个订单表,求这个订单表的订单数,然后根据id关联更新到另一个表中,下面说说的做法。
解决方法
首先查出都多少条订单,并去重一下
SELECT
client_id,
COUNT(1) as num
FROM
A
GROUP BY
client_id
然后把两个表根据id关联起来
SELECT
A.num,B.client_name
FROM
(
SELECT
client_id,
COUNT(1) as num
FROM
B
GROUP BY
client_id
)AS table1
RIGHT JOIN AS table2 ON table1.client_id = table2.id
ORDER BY table1.num
最后更新表
UPDATE A a1
LEFT JOIN (
SELECT
client_id,
COUNT(1) AS num
FROM
B
GROUP BY
client_id
) AS a2 ON a2.client_id = a1.id
SET a1.month_sale_size = a2.num
WHERE
a1.id = a2.client_id
反思
在完成需求的时候遇到了一些问题,然后也百度了一下,就把这些零碎的东西也贴一下。
1.字符串截取
(1) substring(str,index)当index>0从左边开始截取直到结束 当index<0从右边开始截取直到结束 当index=0返回空
(2) substring(str,index,len) 截取str,从index开始,截取len长度
2.去重
我去重一直用的 group by(),括号里面填条件,多个条件用and隔开。
3.切分
类似于scala的split算子
用法:
SELECT SPLIT_STR(string, delimiter, position)
例子:
SELECT SPLIT_STR('a|bb|ccc|dd', '|', 3) as third;