1. 程式人生 > >mysql 從一個表的一個欄位求和,更新到另外一個表及字串擷取、去重、切分

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;