mysql 从一个表的一个字段求和,更新到另外一个表及字符串截取、去重、切分

引子

现有一个需求:一个订单表,求这个订单表的订单数,然后根据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;

猜你喜欢

转载自blog.csdn.net/tang_xiaotang/article/details/81069409